0

私は以前、少し複雑な.htaccessファイルでここで大きな助けを得ました。

これはマルチサイト/ドメインファイルであり%{HTTP_HOST}、非wwwをwww.widgets.comアドレスに書き換え/301するために使用します。

   RewriteCond %{HTTP_HOST} !^www\. [NC]
   RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

問題は、RegexFuがNOTwwwのみを検索することです。次に、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

誰かが私に手を貸してくれたら、私はそれを大いに感謝します。

4

1 に答える 1

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で一致するグループ化を後方参照します。([^.]+)ドメイン名の前にサブドメインがある場合、それは無視されます。

于 2012-12-11T09:35:39.600 に答える