的htaccess的RewriteCond和重写规则不能正常工作
问题描述:
我想所有/admin
电话与该两行重定向到子域.htaccess
:的htaccess的RewriteCond和重写规则不能正常工作
RewriteCond %{REQUEST_URI} ^admin [NC]
RewriteRule ^(.*)/$ http://admin\.somedomain\.com/$1/ [R,L]
好了,什么都不会发生。它只是忽略重定向规则并显示/ admin目录的内容。
仅供参考(和跳过要求贴上我的整个.htaccess
文件),在这里它是:
Options +FollowSymlinks -Indexes
RewriteEngine on
Redirect 404 /favicon.ico
RewriteCond %{REQUEST_URI} ^admin [NC]
RewriteRule ^(.*)/$ http://admin\.somedomain\.com/$1/ [R,L]
# Send all admin. traffic to /admin
RewriteCond %{HTTP_HOST} ^admin\. [NC]
RewriteRule ^(.*)$ /admin/$1 [L]
# Check for www. and add it
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} !^admin\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R,L]
# Add trailing slash if not found
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !favicon.ico
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /$1/ [R,L]
# Process virtual links/directories
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !favicon.ico
RewriteRule ^(.*)$ index.php/?$1 [QSA,L]
答
RewriteCond %(HTTP_HOST} !^admin\.somedomain\.com$
RewriteCond %{REQUEST_URI} ^/admin [NC]
RewriteRule ^(.*)$ http://admin.somedomain.com$1 [R,L]
你失踪您的RewriteCond匹配一个斜线。假设admin.somedomain.com可能与其他域的配置相同,我还添加了一个检查以确保如果该域已经是admin.somedomain.com,则不应用该规则。在RewriteRule中,我做了一些小小的修改:你在右边不匹配,所以你不需要避开点。
您的其余规则也存在一些问题。这不起作用,例如:
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1
您不能在规则的那一侧使用服务器变量。
奇怪的部分是,你的第一个固定规则不起作用,如果我输入'www.somedomain.com/admin',它不会重定向,而只是显示'/ admin'目录的内容。第二条规则起作用(刚刚测试)。 – 2013-03-03 16:58:00