0

すべてのサブドメインを単一のドメインに変更しています。ただし、すべての SEO を失わないようにするには、301 リダイレクトを行う必要があります。私の問題は、約 10,000 のサブドメインがあることです (これは都市に関する Web サイトであり、各都市はサブドメインです)。そのため、新しい URL を作成するために一般的な書き換えルールを作成する必要があります (そうしないと、htaccess が大きすぎます)。

私は自分でやろうとしましたが、何らかの理由で、やりたいことをやっています(何か間違ったことをしていると思います)。これが私のコードです:

 RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com/b/^(.*)
 RewriteRule ^(.*) http://domain.com/city/$1/b/$2 [R=301,L]

 RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com
 RewriteRule ^(.*) http://domain.com/?multi_city=$1 [R=301,L]

これが、これら 2 つのルールで起こることです。

city.domain.com --> domain.com/?multi_city=/
city.domain.com/b/place --> domain.com/?multi_city=/b/place

私は何を間違っていますか?前もって感謝します。

4

2 に答える 2

1

そのため、何時間も経った後、最終的にこれを修正しました:

RewriteCond %{HTTP_HOST} ^(.+)\.mydomain\.(.*)
RewriteCond %{REQUEST_URI}   ^/b
RewriteRule ^(.*)$ http://mydomain.%2/city/%1/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^(.+)\.mydomain\.(.*)
RewriteCond %{REQUEST_URI}   ^/event
RewriteRule ^(.*)$ http://mydomain.%2/city/%1/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^(.+)\.mydomain\.com
RewriteRule ^(.*)$ http://mydomain.com/?multi_city=%1 [R=301,L]

このようにして、最初に場所とイベントをリダイレクトできます。URL がその形式でない場合は、別の形式の URL に移動します。それはおそらく最も効率的な解決策ではありませんが、私にとってはうまくいきます。これが他の誰かに役立つことを願っています。

于 2012-09-07T08:12:02.330 に答える
0

私は最初のRewriteCondが間違っていると思います:

RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com/b/^(.*)

'^'記号は、文字列が開始することを示します。これはグループの一部ではないため、次のことを試してみてください。

RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com/b/(.*)

たぶん、それはより良いでしょう:

RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com/b/([a-zA-Z0-9\-]+)

私はテストせずにそれをやっています、それがうまくいかないなら、私は後でテストをします、そして私はあなたに答えます。

于 2012-09-06T09:36:19.073 に答える