クエリがある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]

これできちんと旧ページにリクエストが来た時にも新しいURLにリダイレクトしてくれますね。Googleさんなどの検索エンジンでの評価も引き継いでくれる筈。

しかし毎度毎度 mod_rewrite の設定はややこしい。

カテゴリ: