我有一个域example.com,在.htaccess中,我使用下面的代码将非www转发到www地址。
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
现在我创建了一个子域test.example.com,由于上面的规则,它会转到http://www.test.example.com,所以我想写它自己的htaccess文件将www重定向到非www。所以在子域名根目录中,我的.htaccess文件包含以下规则。
RewriteEngine On
RewriteCond %{HTTP_HOST} !^test\.example\.com$ [NC]
RewriteRule ^(.*)$ http://test.example.com/$1 [R=301,L]
它无法正常工作并进入重定向循环,我该如何解决?
答案 0 :(得分:0)
取出!和逃脱
RewriteEngine On
RewriteCond %{HTTP_HOST} ^test.example.com$
RewriteRule ^(.*)$ http://test.example.com/$1 [R=301,L]
答案 1 :(得分:0)
您不需要2条规则。只需将此规则保留在主域名的主.htaccess中:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [NE,R=301,L]
现在RewriteCond %{HTTP_HOST} ^example\.com$
条件只会影响主域名,而不会影响子域名。
答案 2 :(得分:0)
我找到了解决这个问题的简单方法。
我的主网站文档根目录为/home/example/public_html
,子域文档根目录为/home/example/public_html/test
。
我刚刚将子域的文档根目录更改为/home/example/test
并且它有效。