我以前在这里得到了一些很好的帮助,有点复杂的.htaccess文件。
这是一个多站点/域文件,使用%{HTTP_HOST}
将非wwww重写/ 301到www.widgets.com地址。
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
问题是RegexFu只查找NOT www。然后添加www。
如果有人链接说mail.widgets.com,这可能会导致一些重复的内容问题,因为这会被重定向到www.mail.widgets.com。
总结:
我需要:
mail.widgets.com -> www.widgets.com
dogs.widgets.com -> www.widgets.com
www.mail.widgets.com -> www.widgets.com
www.dogs.widgets.com -> www.widgets.com
等
我尝试了各种各样的排列,但没有运气:
RewriteCond %{HTTP_HOST} !^www\.[^\.]+\.com [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
没有骰子。我要么最终得到一个循环或其他一些问题。
我只需要任何不是的东西:
www. (anything but period) .com - > www. (last string before .com) .com
粗略的标准:
(anything but period).com -> www. (anything but period).com
如果有人可以伸出援助之手,我会非常感激。
答案 0 :(得分:2)
尝试:
RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.[^.]+\.[^.]+\.[^.]+ [NC]
RewriteCond %{HTTP_HOST} ([^.]+)\.com$ [NC]
RewriteRule ^(.*)$ http://www.%1.com/$1 [R=301,L]
%1
反向引用在先前重写条件中匹配([^.]+)
的分组。它会忽略域名之前的任何子域名(如果有域名)。