ユーザを適切なURLにリダイレクトするコントローラファイルを作成しました。このコントローラに特定のトラフィックを誘導し、残りのものには影響を与えません。 http://website.com/shows.php?id=review-1
は、コントローラに送信するURLの例です。特定のリクエストのみをRewriteRuleを使用してコントローラファイルにリダイレクトします
私がこれまでに整理したのは、サイト全体のサーバー500サーバーエラーを引き起こす次のRewriteRule
です。 %{QUERY_STRING}
状態から-[0-9]+
を削除
RewriteCond %{THE_REQUEST} ^GET\s/shows\.php\?
RewriteCond %{QUERY_STRING} (?:^|&)id=review-[0-9]+(?:&|$) [NC]
RewriteRule^/controller.php [QSA,L]
は、サイト全体の500サーバーエラーを取り除くが、動作しません。次のRewriteRule
は、私が置き換えようとしているのは問題ありません。
RewriteCond %{THE_REQUEST} ^GET\s/shows\.php\?
RewriteCond %{QUERY_STRING} (?:^|&)id=review-1(?:&|$) [NC]
RewriteRule^/review/1/super-baseball-2020/? [R=301,L,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9]+)/([0-9]+)/([a-z0-9-]+)?/?$ /shows.php?id=$1-$2 [QSA,L,NC]
最終結果はhttp://www.website.com/shows.php?id=review-1
になり、ユーザが301リダイレクトを扱うに対処しますhttp://www.website.com/controller.php?id=review-1
で終わるだろうということです。
ルールは私のシステムで正常に動作します。かっこを追加してみてください。あなたは 'RewriteCond%{QUERY_STRING}(^ |&)id = review- [NC]'を使うことができませんでしたか?それはあなたが望むものよりもはるかに多くマッチしますが、あなたが本当に何か他のもののために使うURLはありません。 – Gerben