複数のドメインをカバーするルールを作成するのは非常に簡単です。あなたが望むものを達成するには、次のようなことができます:
RewriteCond %{HTTP_HOST} ^(www\.)?example\.(de|fr|co\.uk)$
RewriteRule .* http://www.example.com/?loc=%2 [R]
要求に応じてそれを取りexample.de、書き直し、 、 、およびに対しても機能します。ただし、バージョンが として書き換えられることに注意してください。これは、必要なものではありません。また、新しいドメイン用に変更する必要があります。example.com/~loc=de.fr.co.uk.co.ukexample.com/~loc=co.uk
したがって、これはもう少し一般的なソリューションですが、必要なものを達成する必要があります。
RewriteCond %{HTTP_HOST} ^(www\.)?example\.(co\.)?(.*)$
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$
RewriteRule .* http://example.com/?loc=%3 [R]
少し説明します:
1 つ目は、、 、などのRewriteCond任意のドメインに一致します。exampleexample.co.ukwww.example.dewww.example.xxx
2 番目は、HTTP_HOSTがまたはでないRewriteCondことを確認します。 example.comwww.example.com
最後に、RewriteRuleこれら 2 つのルールに一致するものをすべて書き換え、ドメインの最後の部分をパラメーターとして末尾に貼り付けます。
http://www.example.co.uk/->http://example.com/?loc=uk
http://www.example.de/->http://example.com/?loc=de
http://www.example.xxx/->http://example.com/?loc=xxx
http://www.example.com/リダイレクトしません。
上記の解決策では、ユーザーが に移動したhttp://www.example.de/some/path/index.php場合、パスはリダイレクトされないことに注意してください。この機能が必要な場合は、リダイレクトにパスを含める必要があります。
RewriteRule (.*) http://example.com/$1?loc=%3 [R]