php - htaccess 带有语言和页面参数的重定向 url

标签 php .htaccess redirect mod-rewrite

我真的迷失在重定向 htaccess 的所有规则中,并且找不到解决我的问题的完美解决方案。 我正在尝试重定向我的网址,如下所示:

http://mywebpage.eu/path/to/site/LANGUAGE/PAGE

应该重定向到谁

http://mywebpage.eu/path/to/site/index.php?lang=LANGUAGE&page=PAGE

但有时它们可​​能会像这样没有页面或语言

http://mywebpage.eu/path/to/site/LANGUAGE/
http://mywebpage.eu/path/to/site/PAGE/

应该重定向到谁

http://mywebpage.eu/path/to/site/index.php?lang=LANGUAGE&page=
http://mywebpage.eu/path/to/site/index.php?lang=&page=PAGE

(所有这些示例都可以以“/”结尾,也可以不以“/”结尾)

当我最终得到正在工作的东西的一部分时,由于添加了虚拟子文件夹“/LANGUAGE/”,我所有的 css/images/js/include(php) 都出现 404 错误...

RewriteEngine on
RewriteBase /path/to/site/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]{2})/(.*)$ index.php?lang=$1&page=$2 [L,QSA]

非常感谢您的帮助。

最佳答案

像这样:

RewriteEngine on
RewriteBase /path/to/site/

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^([a-z]{2})(?:/(.*))?/?$ index.php?lang=$1&page=$2 [L,QSA]

RewriteRule ^(\w+)/?$ index.php?lang=&page=$1 [L,QSA]

对于 css/js/images,您可以将其添加到 <head> 下面页面 HTML 部分:<base href="/path/to/site/" />这样每个相对 URL 都是从该基本 URL 解析的,而不是从当前页面的 URL 解析的。

关于php - htaccess 带有语言和页面参数的重定向 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34861169/

相关文章:

php - 等同于 PHP 的 fgets() 的 C++?

php - 使用 php 连接数据库时出现未定义的属性错误

php - 从搜索栏中的用户输入中删除单引号

.htaccess - 为多个域重写为 www 和 https 并不总是有效

javascript - 如何通过仅附加哈希来重新加载浏览器页面?

php - 将数据库中的用户计数到相同的用户级别

apache - Apache 配置中的 "Accept-EncodXng"是什么?

apache - 如何对适用于站点上所有路径的 htaccess 重定向设置异常(exception)?

.htaccess - 来自子文件夹的主机域

python - 如何在 Pylons 中使用重定向设置 cookie