2

複数のドメイン拡張子を持つ Web サイトがあります。

example.com
example.de
example.fr
example.co.uk

.comURLが次のように書き換えられるように、人々がドメインにリダイレクトされるようにしたいと思います。

example.de        -> http://www.example.com/?loc=de
example.fr        -> http://www.example.com/?loc=fr
www.example.co.uk -> http://www.example.com/?loc=uk

example.(fr)/blaしかし、URLのドメイン拡張子部分を選択して書き換える方法がわかりません。例ごとに特別なケースを作成できることに気付きました。

RewriteCond %{HTTP_HOST} !^(www\.)?example\.de$
RewriteRule .* http://www.example.com/?loc=de [L,R=301]

httpd.confただし、拡張機能をさらに購入した場合に、ファイルなどを更新する必要がないようにしたいと考えています。

どんな提案でも大歓迎です!

4

1 に答える 1

3

複数のドメインをカバーするルールを作成するのは非常に簡単です。あなたが望むものを達成するには、次のようなことができます:

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]
于 2013-06-28T12:52:22.597 に答える