htaccess重写和重写规则无法正常工作

时间:2013-02-28 23:15:16

标签: .htaccess mod-rewrite

我正在尝试将所有/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]

1 个答案:

答案 0 :(得分: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

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