2013-02-28 70 views
0

我想所有/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] 

回答

0
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 

您不能在规则的那一侧使用服务器变量。

+0

奇怪的部分是,你的第一个固定规则不起作用,如果我输入'www.somedomain.com/admin',它不会重定向,而只是显示'/ admin'目录的内容。第二条规则起作用(刚刚测试)。 – 2013-03-03 16:58:00