我正在尝试将所有/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]
答案 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
您不能在规则的那一侧使用服务器变量。