RewriteCond排除目录及其子目录

时间:2010-11-10 17:06:01

标签: mod-rewrite

我一直试图让维基百科风格的语言工作。所以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]

感谢您提供任何帮助,我确信这是一件非常愚蠢的事情,就像往常一样。

1 个答案:

答案 0 :(得分:2)

你的问题是REQUEST_URI不是以admin开头的,它会在前面有一个斜线...如果你没有重写基础,它可能以/ admin开头......所以你可以把它改成它!^ / admin或者只是!admin或!admin /如果您的所有代码都在foo.com/admin/*

REQUEST_URI将成为整个GET,如“/foo/bar.html”