我一直试图让维基百科风格的语言工作。所以url对于英语是en.example.com
,对于法语来说是fr.example.com
等等......这很好但是我希望管理区始终默认为基本语言,即不设置LANGUAGE环境变量。我尝试添加RewriteCond %{REQUEST_URI} !^admin [NC]
,但似乎没有效果。
我的mod_rewrite代码如下:
# Handle languages
# Picks up the language code from the browser accept-language parameter
RewriteCond %{HTTP:Accept-Language} ^([a-z]{2}).*$ [NC]
RewriteCond %{HTTP_HOST} !^[a-z]{2}\.[a-z]{2,}\. [NC]
RewriteRule ^(.*)$ http://%1.%{HTTP_HOST}/$1 [R=301]
RewriteCond %{REQUEST_URI} !^admin [NC]
RewriteCond %{HTTP_HOST} ^([a-z]{2})\.[a-z]{2,}\. [NC]
RewriteRule ^(.*)$ - [ENV=LANGUAGE:%1,QSA]
# Redirecting all requests to one script
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\+a-zA-Z0-9,%\(\)\_\ -/]+)$ /index.php [NC,L,QSA]
感谢您提供任何帮助,我确信这是一件非常愚蠢的事情,就像往常一样。
答案 0 :(得分:2)
你的问题是REQUEST_URI不是以admin开头的,它会在前面有一个斜线...如果你没有重写基础,它可能以/ admin开头......所以你可以把它改成它!^ / admin或者只是!admin或!admin /如果您的所有代码都在foo.com/admin/*
中REQUEST_URI将成为整个GET,如“/foo/bar.html”