.htaccess 将非www重定向到带有子域的www错误

.htaccess 将非www重定向到带有子域的www错误,.htaccess,redirect,dns,subdomain,.htaccess,Redirect,Dns,Subdomain,我需要在我的网站上强制使用WWW 所以我用了这个htacces: #Redirect non-www to WWW RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 问题是 将被重定向到 如何解决这个问题?为了避免子域出现这种情况,您只需设置一个只匹配主域而不匹配www的条件。此版本将非常一般地匹配,任何包含两个部分且不以www开头的

我需要在我的网站上强制使用WWW

所以我用了这个htacces:

#Redirect non-www to WWW
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
问题是 将被重定向到


如何解决这个问题?

为了避免子域出现这种情况,您只需设置一个只匹配主域而不匹配
www的条件。
此版本将非常一般地匹配,任何包含两个部分且不以www开头的域,如果第一个部分不是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
的情况下进行测试,有关详细信息,请参阅此答案。

第二个代码会将我重定向到www.mydomain.com.com(with two.com)