Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
所有子域上的多站点强制www.htaccess代码段_.htaccess_Mod Rewrite_Subdomain_No Www - Fatal编程技术网

所有子域上的多站点强制www.htaccess代码段

所有子域上的多站点强制www.htaccess代码段,.htaccess,mod-rewrite,subdomain,no-www,.htaccess,Mod Rewrite,Subdomain,No Www,我以前在这里得到了一些关于有点复杂的.htaccess文件的帮助 它是一个多站点/域文件,使用%{HTTP_HOST}将非WW/301重写到www.widgets.com地址 RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 问题是RegexFu只查找www,然后添加www 如果有人链接到mail.widgets.com,这可能会导致一些重复的内

我以前在这里得到了一些关于有点复杂的.htaccess文件的帮助

它是一个多站点/域文件,使用
%{HTTP_HOST}
将非WW/301重写到www.widgets.com地址

   RewriteCond %{HTTP_HOST} !^www\. [NC]
   RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
问题是RegexFu只查找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
如果有人能帮我一把,我将不胜感激。

试试:

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
反向引用与先前重写条件中的
([^.]+)
匹配的分组。它会忽略域名之前的任何子域(如果有)。

Closer。我以为它会起作用:)www.person.widgets.com不会重写为www.widgets.com:(我猜这是因为!^www.condition.person.widgets.com现在确实重写到了www.widgets.com……@SamanthaP添加了一个额外的OR'ed条件,以防它以www开头,但有一个以上的三级域名Odd。它的第一行似乎是:RewriteCond%{HTTP\u HOST}!^www([^.]+)\.com$[NC]哇,你可以在htacces中使用OR或布尔值?!?眼睛闪烁着可能性,所以()是捕获组…没有()的同一正则表达式仍然匹配,但不捕获,对吗?