0

Google で発生している一部のクローラー エラーを修正するために、.htaccess を使用して 301 リダイレクトを作成しようとしています。Google が古いバージョンの URL を使用しているため、スパイダーがレガシー パスにアクセスしようとするとエラーが発生します。これらの従来の URL にはスペースが含まれており、その多くが URL 文字列内の異なる場所に表示されていました。たとえば、URL は次のようになります。

http://www.example.com/car-kits-halogen-aircon-oil/773 CAR 773-halogen-aircon-oil

これらの URL は、特に最終的にはすべて同じコンテンツを表示するため、不必要に長くなります。それらは現在、次のように短縮されています。

http://www.example.com/773-halogen-aircon-oil

これらは文字通り 1,000 以上ありますが、URL の末尾の順列は 6 つしかないため、RedirectMatch または RewriteRule のいずれかを使用して、これらの 6 つの順列のいずれかが存在するかどうかを簡単に照合し、適切な新しい URL にリダイレクトできると考えました。私は次のことを試しました:

RedirectMatch .*/773[\s]?(%20)?CAR[\s]?(%20)?773-halogen-aircon-oil$ http://www.example.com/773-halogen-aircon-oil

としても:

RewriteEngine On
RewriteBase /
RewriteRule .*/773[\s]?(%20)?CAR[\s]?(%20)?773-halogen-aircon-oil$ http://www.example.com/773-halogen-aircon-oil [R=301,L]

これらは機能していません。正規表現文字クラスの代わりに \ でスペースをエスケープする、正規表現の先頭を ^.*/?773 に変更するなど、さまざまなオプションを試しましたが、何も機能しません。

http://www.regular-expressions.info/javascriptexample.htmlで正規表現テスト機能を使用しましたが、正規表現が有効であることが報告され、期待する URL に対して一致が生成されますが、.htaccess はリダイレクトされません。私が期待するように。

次のようにプレーンなリダイレクトを使用できます。

Redirect 301 "/car-kits-halogen-aircon-oil/773 CAR 773-halogen-aircon-oil" http://www.example.com/773-halogen-aircon-oil

これは機能しますが、car-kits-halogen-aircon-oil が存在する場合にのみ一致し、その URI セグメントにはおそらく 200 の順列があり、すべての可能な順列を手動で入力するのは大変な作業になるため、問題があります。

助言がありますか?私がやろうとしていることは可能ですか?

4

1 に答える 1

0

あなたが試みているルールは少し複雑に思えます。もっと例を挙げたほうがいいでしょう。

RewriteEngine on
RewriteRule ^.*/773%20CAR%20(.*)$ http://www.example.com/$1 [R=301,L]

仕事をするべきです。

于 2011-01-27T03:48:37.847 に答える