クエリがあるURLのリダイレクト設定をしてみる。
やり方などすぐ忘れてしまうのでメモメモ。
先日プロ野球・クリンチナンバー計算ページをリニューアルして、これまでのページ構成を変更したのです。
【これまでのページ構成】
- パリーグのデータ → http://freefielder.jp/magic/index.php
- セリーグのデータ → http://freefielder.jp/magic/index_c.php
【新しいページ構成】
- パリーグのデータ → http://freefielder.jp/magic/index.php?l=p
- セリーグのデータ → http://freefielder.jp/magic/index.php?l=c
新旧ページとも、ある日付のデータ(例えば2014年3月31日のもの)を取り出したい場合には、お尻にクエリ文字列 ?year=2014&month=03&day=31 が付く、という仕様。
なので、旧ページ:/magic/index_c.php?year=2014&month=03&day=31 にアクセスされた時に、新ページ:/magic/index.php?year=2014&month=03&day=31&l=c に飛ばす必要が出てきます。
ということで、 .htaccess に次のような記述を追加。
RewriteEngine on
# 既に On ならば上記の記述は必要なし
# まずはクエリ文字列を取り出す。
RewriteCond %{QUERY_STRING} ^([=&-a-zA-z0-9]*)/?$
# magic/index_c.php?query へのアクセスを magic/index.php?query&l=c にリダイレクト。
RewriteRule ^magic/index_c\.php$ /magic/index.php?%1&l=c [R=301,L]
# 既に On ならば上記の記述は必要なし
# まずはクエリ文字列を取り出す。
RewriteCond %{QUERY_STRING} ^([=&-a-zA-z0-9]*)/?$
# magic/index_c.php?query へのアクセスを magic/index.php?query&l=c にリダイレクト。
RewriteRule ^magic/index_c\.php$ /magic/index.php?%1&l=c [R=301,L]
これできちんと旧ページにリクエストが来た時にも新しいURLにリダイレクトしてくれますね。Googleさんなどの検索エンジンでの評価も引き継いでくれる筈。
しかし毎度毎度 mod_rewrite の設定はややこしい。
コメント