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 の順列があり、すべての可能な順列を手動で入力するのは大変な作業になるため、問題があります。
助言がありますか?私がやろうとしていることは可能ですか?