新しいウェブサイト構造のクエリ文字列を使用した.htaccessリダイレクト

May 21 2019

WebサイトのURL構造を変更したので、ユーザーをリダイレクトしたいと思います。

リダイレクトする必要があります:

https://example.com/find?q=batman

https://example.com/search?query=batman

ここで、「batman」は検索フレーズです。

私にとっての問題は、どのように変更するかです

qquery?

そのようなもの、それは機能しません

RewriteRule ^find?q=[^/] /search?query=[^/] [R=302,L]

回答

1 DocRoot May 21 2019 at 22:14

RewriteRule パターンのみURLパスに対する一致-この特に除外クエリ文字列。

代わりに、RewriteCondディレクティブを使用してQUERY_STRINGサーバー変数をチェックし、q=。の後のクエリ文字列の残りをキャプチャする必要があります。

例えば:

RewriteCond %{QUERY_STRING} ^q=(.*)
RewriteRule ^find$ /search?query=%1 [R=302,L]

%1最後に一致したCondPatternでキャプチャされたグループへの後方参照です。すなわち。(.*)-の値はqクエリ文字列のURLパラメータと余り。

キャッシュの問題を回避するために、正常に機能することを確認した後でのみ、302(一時的)リダイレクトを301(永続的)に変更します。