.htaccess用于在php应用程序中重定向语言

时间:2014-01-23 13:09:30

标签: php regex .htaccess mod-rewrite

我有一个网站。在PHP中,我使所有页面都具有唯一ID,以便我知道要包含哪些文件。所有逻辑都通过index.php页面。

所以,我想让montkuce.com/en/foobar通过GET向index.php发送请求:index.php?id = foobar& lang = en

这是我到目前为止所做的,它不起作用:

RewriteEngine On

RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ http://montkuce.com/en/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ http://montkuce.com/de/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ http://montkuce.com/fr/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^it [NC]
RewriteRule ^$ http://montkuce.com/it/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^cz [NC]
RewriteRule ^$ http://montkuce.com/cz/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^sk [NC]
RewriteRule ^$ http://montkuce.com/sk/ [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(en|de|fr|it|cz|sk)/(.*)$/?$ index.php?lang=$1&id=2 [QSA,NC,L]

1 个答案:

答案 0 :(得分:2)

你的正则表达式在最后一条规则中几乎没有。使用此:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(en|de|fr|it|cz|sk)/(.*?)/?$ /index.php?lang=$1&id=2 [QSA,NC,L]
相关问题