我需要在我的网站上强制使用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
我该如何解决?
答案 0 :(得分: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
开头,而是仅在与裸域匹配时才进行重定向。根据需要在( | )
OR分组中添加尽可能多的域名。
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]
答案 1 :(得分:1)
如果您只想重定向主域名
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mydomain.com$
RewriteRule .* http://www.%{HTTP_HOST}/$0 [R,L]
永远不要在启用301
的情况下进行测试,请参阅此回答Tips for debugging .htaccess rewrite rules了解详细信息。