0

我正在尝试/admin使用以下两行将所有调用重定向到子域.htaccess

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]
4

1 回答 1

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

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

于 2013-03-01T02:36:29.687 回答