大量のリダイレクト設定の確認をする
mod_rewrite でたくさんの旧URLから新URLへのリダイレクト設定をしたときに、検証した方法をメモ。
もっと自動化したほうが目視確認が軽減されていいのだろうけど、そこまで手をつけなかったので結構人力部分が残っているのが難ですが。
まず、ブラウザのアドオンなどで UserAgent を変更することができたりしますが、チェックするべき URL が多すぎてブラウザにURLを500回くらい入れるのはつらいのでコマンド&スクリプトでチェックしたいです。
というわけで、まずはコマンドでリダイレクトの状況を把握する方法。
$ HEAD -S -H 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; ja-jp) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7' http://the.url.you.want.to.check/
たとえばこれは UserAgent を iPhone4 のものに偽装してテストする場合。
HEAD コマンドはPerl の LWP モジュールに付属のコマンドだと思うのですが、HTTP リクエストした結果のヘッダ情報だけを取得することができて便利です。
-S をつけてレスポンスステータスを全部表示するようにし、-H でリクエストする時のヘッダ情報を上書きします。
次にテストしたいURLとりダイレクト後のURLの一覧対応表を作り、それを読み込んで上のコマンドを順次たたくようにして、それらの結果を整形しつつ出力するようにします。
たとえばこんな感じに。
********* uri should will be http://URI.which.should.become.so/ HEAD http://URI.which.redirect.src/ --> 302 Found HEAD http://URI.which.should.become.so/ --> 200 OK Connection: close ....
期待するリダイレクト先、アクセスしたURL、リダイレクト後のURLをそれぞれ目視で確認。
スクリプト実行時に UserAgent は引数指定できるようにしておいて、出力結果を > などでファイルへ保存したりして、想定どおりかどうかをチェックする、という感じでやりました。
ブラウザに毎回 URL を入力するよりは断然、労力軽減できますが量が増えると目視確認がやはりつらい。。
さらにがんばるなら出力結果もプログラム的にチェックしたいところ。