htaccess使用语言和页面参数重定向网址

时间:2016-01-18 18:02:03

标签: 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

但有时他们可能没有PAGE或LANGUAGE

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

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

当我最终获得某些工作的一部分时,我的所有css / images / js / include(php)都因为添加了该虚拟子文件夹而导致404错误“/ LANGUAGE /"...

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]

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

有这样的话:

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,您可以在页面HTML <head>的{​​{1}}部分下方添加此内容,以便从该基本网址解析每个相对网址不是来自当前页面的URL。