为了避免在子域上发生这种情况,您只需一个仅匹配主域而不匹配的条件www.
此版本将非常通用地匹配任何具有两个部分且不以 www 开头的域,不匹配任何具有 3 个部分的域,其中第一个是不是万维网。
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]