重定向非WWW WWW错误与子域
问题描述:
我需要强制WWW在我的网站上。重定向非WWW WWW错误与子域
所以我用这个htacces:
#Redirect non-www to WWW
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
问题是,http://subdomain.mydomain.com 将被重定向到http://www.subdomain.mydomain.com
我该如何解决呢?
答
为避免出现在子域名上,您只需匹配主域名而不是www.
该版本将非常一般地匹配,任何包含两部分的域名并不以www开头,不匹配任何域名的域名为3首先不是www的部分。
RewriteEngine On
# Doesn't start with www
RewriteCond %{HTTP_HOST} !^www\. [NC]
# And does not also have a subdomain
RewriteCond %{HTTP_HOST} !^[a-z0-9_-]+\.[a-z0-9_-]+\.[a-z0-9_-]+$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
但是,这是简单的,如果你有一个固定的一套域的处理。不要检查从www
开始,请仅在与裸露域匹配时执行重定向。根据需要将多个域名添加到(|)
或分组中。
RewriteEngine On
# Matching any of 3 domains without www, and no subdomain
RewriteCond %{HTTP_HOST} ^(domain1|domain2|domain3)\.com$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
答
如果你想重定向只有主域
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mydomain.com$
RewriteRule .* http://www.%{HTTP_HOST}/$0 [R,L]
决不会启用301
测试,详见这个答案Tips for debugging .htaccess rewrite rules。
第二个代码会将我重定向到www.mydomain.com.com(与两个.com) – anarchOi 2013-03-10 05:18:21
@anarchOi哎呀抱歉,删除.com。复制/粘贴错误。 – 2013-03-10 05:28:07