私のhttpd.conf
ファイルにはすでに多くの mod_rewrite ルールが機能しています。つい最近、Google がクエリ文字列を含む、書き換えられていない URL の 1 つをインデックスに登録していたことに気付きました。
http://example.com/?state=arizona
mod_rewrite を使用して、次の URL への 301 リダイレクトを行いたいと考えています。
http://example.com/arizona
問題は、私の書き換えルールの後半で、クエリ変数を WordPress に渡すために 2 番目の URL が書き換えられていることです。最終的に次のように書き換えられます。
http://example.com/index.php?state=arizona
これは適切な機能です。これまでに試したことはすべて、まったく機能しないか、無限の書き換えループに陥りました。これは私が今持っているもので、ループに陥っています:
RewriteCond %{QUERY_STRING} state=arizona [NC]
RewriteRule .* http://example.com/arizona [R=301,L]
#older rewrite rule that passes query string based on URL:
RewriteRule ^([A-Za-z-]+)$ index.php?state=$1 [L]
これにより、無限の書き換えループが発生し、次の URL に移動します。
http://example.com/arizona?state=arizona
次に、これを試しました:
RewriteRule .* http://example.com/arizona? [R=301,L]
URL 内のクエリ文字列を削除しましたが、それでもループが発生します。