ホームページにリダイレクトしたいこの古いリンクhttp://www.example.com/?page_id=617/
があります。私はこのリダイレクトを次のもので実装しようとしました:
Redirect 301 /?page_id=617/ https://www.example.com/
この変更を適用した後、何も起こりませんでした。古いURLはリダイレクトしません。
クエリ文字列をmod_alias Redirect
と一致させることはできません。代わりにmod_rewrite RewriteRule
ディレクティブを使用する必要があります。 RewriteCond
ディレクティブのQUERY_STRING
サーバー変数と照合します。
代わりに、.htaccess
ファイルの上部付近で次を試してください。
RewriteEngine On
RewriteCond %{QUERY_STRING} ^page_id=617/$
RewriteRule ^$ https://www.example.com/? [R=302,L]
これはexactクエリ文字列?page_id=617/
と一致することに注意してください。 パターンを^page_id=617
に変更して、単純にstarts?page_id=617
となるクエリ文字列に一致させます。
302を301に変更するのは、正常に機能していることが確実な場合のみです。 (誤ったリダイレクトがブラウザによってキャッシュされるのを防ぐため。)
RewriteRule
substitutionの最後の?
は、クエリ文字列をリクエストから削除するために必要です(そうでない場合、これはターゲットURLに渡されます)。 Apache 2.4+では、代わりにQSD
フラグを使用できます。