2

4 つのドメインがあり、そのうちの 3 つを最後のドメインにリダイレクトします。私はすでにいくつかの htaccess ルールを使用しており、うまく機能しています。

RewriteEngine On

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

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

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

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

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

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

唯一の問題は、「www.first.com/about」と入力すると、「www.forth.com/about」が表示されず、同じことが表示されることです。すべてのドメインは forth.com に転送されますが、それらにはホスティングがないため、他のドメインの htaccess ファイルを配置することはできません。ガイドしてください。いただければ幸いです。

4

1 に答える 1

0

これはおそらく起こっていることであり、少なくとも私のテストケースでは、この修正がそれを処理します。

[L、R = 301]を使用する代わりに、順序を逆にして[R = 301、L]を実行します。Lは最後を意味し、その時点で何をすべきかを評価するサイクルを終了します。私はいつも[R=301、L]を使用しており、どこでも見つけることができるすべての例があります。潜在的に、あなたのapacheはそのLにぶつかり、すぐに新しい文字列をURLパーサーに返し、そこまで到達しなかったため、301リダイレクトとして送信していません。

また、上のfirst.comスニピットでは、^(。*)の$を省略しました。ただし、その行についてのみ、これがタイプミスだったのか、実際の.htaccessファイルにないのかはわかりません。

それ以外の場合は、次を使用して少し整理することができます。

RewriteCond %{HTTP_HOST} ^((www.)?)first.com [NC,OR]
RewriteCond %{HTTP_HOST} ^((www.)?)second.com [NC,OR]
RewriteCond %{HTTP_HOST} ^((www.)?)third.com [NC]
RewriteRule ^(.*)$ http://www.forth.com/$1 [R=301,L]
于 2012-09-26T20:44:41.187 に答える