サーバー

永久引越しの謎

2013年10月06日
Webページを永久引越しする時、古いページの様々な情報を引き継ぎたいことがあります。

ブラウザからのアクセスは新しいページへリダイレクト、クローラーにはページ情報を引き継いで貰う方法はいくつかあります。
詳しくは割愛しますが、【.htaccess】を使いリダイレクトする方法が一番良いでしょうか。

今回は引っ越すページは1ページだけ、その上PHPを使っているので、【.htaccess】ではなく、PHPにソースを記述することにしました。

古いページ(http://oldsite.xxx/old.php)へ
Header("HTTP/1.1 301 Moved Permanently");
Header("Location: http://newsite.xxx/new.php");
と書けばOKです。

いざブラウザから古いページへアクセスすると、とんでもないことが!!!
http://newsite.xxx/new.php
ではないページへリダイレクトされてしまっています。

本番サイトの前に、テストサイトで試してみたのですが、その時リダイレクト先に設定していたページへリダイレクトされてしまってます。

今日は他のテストも行い、そのテストでは【.htaccess】のリダイレクトを使いました。その時、操作を誤り【.htaccess】を思いもしないサーバーのディレクトリにアップしてしまったのかと思い、サーバーの中を探し回りました。
ですが見当たりません。

http://oldsite.xxx/old.php のソースを書き変えてエコーを吐かせてみました。なんと!無視です。エコーは吐かず、リダイレクトされてしまいます。
つまり、http://oldsite.xxx/old.php に何と書こうと、
Header("HTTP/1.1 301 Moved Permanently");
Header("Location: http://newsite.xxx/new.php");
が実行されているのです。

なんじゃぁこりゃぁぁぁぁ!!!!!

2時間ほどあずった挙句、思いついたのが、『ブラウザが勝手にリダイレクトしてる?』でした。試しに別のブラウザからアクセスすると、あっさり正しいURLにリダイレクト・・・されました。

テストに使っていたのはIE9です。
履歴を消せばちゃんと動くかと思い、消してみましたが、駄目でした。
色々やってみた結果、【ツール-閲覧履歴の削除】で【お気に入りWebサイトデータを保持する】のチェックを外して削除するとリダイレクトの履歴が削除されるようです。

思い出してみると、テストのとき使用したファイルを、そのまま本番サイトにアップしてしまった記憶があります。
なので、初回アクセス時に、テストサイトのページへリダイレクトされ、それがブラウザの一時ファイルに残っていたようです。
2回目以降のアクセスはブラウザの一時ファイルの方が、優先されるようで、テストサイトのページへリダイレクトされ続けた、というのが真相のようです。

やれやれ、数分もかからず終わるはずの作業が、2時間弱かかってしまいました。