質問: ### 前提・実現したいこと wordpressを使用した新ページに 旧ページのURLへの被リンクやgoogleの評価のため 301リダイレクトを作成したい。 クエリなしのURLはリダイレクト成功しました。 クエリあり、かつリダイレクト後もクエリの数字がそのまま利用できる物も成功しました。 クエリあり、リダイレクト前は数字、リダイレクト後は固有文字列へリダイレクトするという ページ群に四苦八苦しています。 どうクエリ以下の数字を条件に反映させてあげればよいでしょうか? ### 発生している問題・エラーメッセージ ``` 該当行 /memberbl/index.php?ID=1 を /archives/member/yamada_tarou にしダイレクトしたい。 /memberbl/index.php?ID=2 を /archives/member/suzuki_ichirou にリダイレクトしたい。 クエリ付URLを固定文字列へ変更したい。 ###該当のソースコード ``` RewriteEngine On RewriteBase / RewriteRule ^memberbl/index.php?ID=1$ /archives/member/yamada_tarou [R=301,L] RewriteRule ^memberbl/index.php?ID=2$ /archives/member/suzuki_ichirou [R=301,L] RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] ``` ### 試したこと 4日ほど前からリダイレクトの学習を始めました。 RewriteEngine On #リライトエンジンON RewriteBase / #ドキュメントルートからのパスにセット RewriteRule ^index\.php$ - [L] #無限ループの防止。index.php以外へのリクエストの場合にRewriteを行う。 RewriteCond %{REQUEST_FILENAME} !-f #[!-f]ファイル以外の場合は真を、ファイルの場合は偽を返す。 RewriteCond %{REQUEST_FILENAME} !-d #[!-d]ディレクトリ以外の場合は真を、ディレクトリの場合は偽を返す。 RewriteRule . /index.php [L] #[.]は/index.phpに書き換えられる クエリなしのURLはリダイレクト成功しました。 RewriteRule ^aboutus/index.html$ /aboutus [R=301,L] /aboutus/index.html -> /aboutus へリダイレクト成功 昨日、クエリあり、かつリダイレクト後もクエリの数字がそのまま利用できる物も成功しました。 RewriteCond %{REQUEST_URI} (^/servicesbl/) RewriteCond %{QUERY_STRING} ^ID=(.*)$ RewriteRule .* /services/id%1? [R=301,L] /servicesbl/index.php?ID=1 -> /services/id1 へリダイレクト成功 /servicesbl/index.php?ID=99 -> /services/id99 へリダイレクト成功 昨日から今日にかけて、リダイレクト前は数字、リダイレクト後は固有文字列へリダイレクトするという ページのリダイレクトに挑戦しています。 /memberbl/index.php?ID=1 を /archives/member/yamada_tarou にしダイレクトしたい。 条件の側にクエリを含めることができたらうまくいくと考えています。 イメージでは以下のような者だと思いますが、以下ではうまくいきませんでした。 RewriteCond %{REQUEST_URI} (^/memberbl/index.php?ID=1) どうクエリ以下の数字を条件に反映させてあげればよいでしょうか?
回答: 今朝、試したと思っていた例を 今もう一度試したらあっさりうまくいきました。 RewriteCond %{REQUEST_URI} (^/membersbl/) RewriteCond %{QUERY_STRING} ^ID=1$ RewriteRule .* /archives/member/yamada_tarou? [R=301,L] 1000もあるわけじゃないので、これで対応したいと思います。