新しいウェブサイト構造のクエリ文字列を使用した.htaccessリダイレクト
May 21 2019
WebサイトのURL構造を変更したので、ユーザーをリダイレクトしたいと思います。
リダイレクトする必要があります:
https://example.com/find?q=batman
に
https://example.com/search?query=batman
ここで、「batman」は検索フレーズです。
私にとっての問題は、どのように変更するかです
q
query
後?
そのようなもの、それは機能しません
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(永続的)に変更します。