mydomain1.co.uk
とmydomain1.com
をwww.mydomain1.com
に完全にリダイレクトする次のものがあります。
RewriteCond %{HTTP_Host} !^(.*)\.mydomain1\.com$ [NC]
RewriteRule ^(.*)$ http://www.mydomain1.com/$1 [R=301,L]
2番目のドメインにmydomain2.com
のすべてのwww以外のトラフィックをwww.mydomain2.com
にリダイレクトするルールを追加しようとしています。
ありがとう!
同じフォルダを指すドメインとサブドメインがかなりあるようで(同じ.htaccessを共有するため)、元のアプローチはこのような状況には適していません。あなたのルールの代わりにこれらのルールを使用してください:
RewriteCond %{HTTP_Host} =mydomain1.co.uk [OR]
RewriteCond %{HTTP_Host} =mydomain1.com
RewriteRule ^(.*)$ http://www.mydomain1.com/$1 [R=301,L]
RewriteCond %{HTTP_Host} =mydomain2.com
RewriteRule ^(.*)$ http://www.mydomain2.com/$1 [R=301,L]
これらのルールは、質問で説明されているドメイン/サブドメインでのみ機能し、他のサブドメインをキャッチしません(例:hello.mydomain1.com
はこれらのルールをトリガーしません)。
別の方法は、ホスト名でmydomain1
を確認し、がwww.mydomain1.com
(正規のホスト名)ではなく、正規のホスト名。
例えば:
RewriteCond %{HTTP_Host} mydomain1 [NC]
RewriteCond %{HTTP_Host} !^www\.mydomain1\.com$
RewriteRule (.*) http://www.mydomain1.com/$1 [R=301,L]
これは、mydomain1
(mydomain1
の一部としてmydomain2
が合法的に発生できなかった場合)とドットで終わるFQDNのさまざまなバリエーションを処理します。次に、mydomain2
について繰り返します。
両方のドメインが同じ標準ホスト名形式(つまり、例のようにwww.example.com
)を持っている場合、これら2つ(またはそれ以上)のルールを1つに組み合わせることができます。
RewriteCond %{HTTP_Host} (mydomain1|mydomain2) [NC]
RewriteCond %1@@%{HTTP_Host} !^([a-zA-Z]+)@@www\.\1\.com$
RewriteRule (.*) http://www.%1.com/$1 [R=301,L]
2番目のCondPatternの\1
は、最初の条件で一致したドメイン名への内部後方参照です。 。 %1
は最後の後方参照ですmatchedCondPattern(つまり、最初のドメイン名CondPattern)。 2番目のconditionは、negatedパターンであるため、「一致」することはありません。 。