2013-03-09 105 views

回答

2

为避免出现在子域名上,您只需匹配主域名而不是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] 
+0

第二个代码会将我重定向到www.mydomain.com.com(与两个.com) – anarchOi 2013-03-10 05:18:21

+0

@anarchOi哎呀抱歉,删除.com。复制/粘贴错误。 – 2013-03-10 05:28:07

1

如果你想重定向只有主域

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^mydomain.com$ 
RewriteRule .* http://www.%{HTTP_HOST}/$0 [R,L] 

决不会启用301测试,详见这个答案Tips for debugging .htaccess rewrite rules