web-dev-qa-db-ja.com

HTTP_Hostによるリダイレクトはサブサブドメインにリダイレクトします

設定

私は次の。htaccessルールを持っています

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

これは、無効なサブドメイン(wwwまたはde)をwwwサブドメインにリダイレクトするのに役立ちます。

私は解決策を見てきましたが、それらは単一のドメインサイトにのみ依存しています。

複数のドメインがあります:

http://www.example.com
http://www.example.net
http://de.example.com

すべて独自のサイトブランドを提供しています。

これで、上記の。htaccessルールがあり、誰かがhttp://example.comを入力するとhttp://www.example.comにリダイレクトされます。 。

問題

誰かがhttp://test.example.comと入力すると、http://www.test.example.comにリダイレクトされ、誰かがhttp://test.example.netと入力すると、http://www.test.example.netにリダイレクトされます。

質問

http://test.example.comhttp://www.example.comにリダイレクトするようにするにはどうすればよいですか? http://test.example.netからhttp://www.example.netへ。

将来、さらにドメインが追加されるため、ドメインに依存しないソリューションが必要です。

2
Tschallacka

サブドメインをパラメーターとして使用してリダイレクトするには:

# HTTP 301 Redirect test.*.net -> www.*.net
RewriteCond %{HTTP_Host} ^test.([^.]+).net$ [NC]
RewriteRule (.*) http://www.%1.net/$1 [R=301,L)

# HTTP 301 Redirect test.*.com -> www.*.com
RewriteCond %{HTTP_Host} ^test.([^.]+).com$ [NC]
RewriteRule (.*) http://www.%1.com/$1 [R=301,L)

http://example.comサブドメイン(www.)を使用して、サブドメイン(たとえばhttp://www.example.com)がないときにメインWebサイトにリダイレクトする場合:

# HTTP 301 Redirect *.net -> www.*.net
RewriteCond %{HTTP_Host} ^([^.]+).net$ [NC]
RewriteRule (.*) http://www.%1.net/$1 [R=301,L)

# HTTP 301 Redirect *.net -> www.*.net
RewriteCond %{HTTP_Host} ^([^.]+).com$ [NC]
RewriteRule (.*) http://www.%1.com/$1 [R=301,L)

.htaccessファイルで多くのことを達成しようとしている場合、 htaccess Made-With-Love Webサイトで条件とURL書き換えに与える影響をテストすると役立つ場合があります。

これがあなたが苦労している場所である場合、.htaccessでは、最後に一致したRewriteCond式からのパーセント記号(たとえば、%1)のプレフィックスが付いたパラメーター、通常は角括弧()で囲まれ、RewriteRule式の参照値(通常は$1)の参照値、通常は自動的に割り当てられる値によって、対象としてマークされていますApacheおよびURLに関連します。

3
richhallstoke