301リダイレクト(恒久的な移転)は一度リダイレクトされると、その後にコンテンツができていてもリダイレクトされる。
概要
サーバが301リダイレクトを返してきた場合、ブラウザはリダイレクト先のURLをキャッシュして、次に元のURLにアクセスした際には直接リダイレクト先のURLにアクセスする。
- 元URLにアクセスしないので、現在はコンテンツがあっても考慮されない!
- この現象自体を知らないと原因究明が出来なくてハマる。っていうかハマった。
例
- 「http://example.com/hoge」にアクセス。
- 301が返ってきて「http://example.com/piyo」にリダイレクト。
- 「http://example.com/hoge」にアクセス。
- 「http://example.com/hoge」にアクセスすることなく「http://example.com/piyo」が表示。
解決方法
- この状態になってしまったらブラウザのキャッシュ削除。
- 古いIEだとキャッシュを削除してもリダイレクトの設定は残るらしい。(未確認)
- IE9の情報。IE11ではブラウザのキャッシュ削除でOK。
- 「InPrivate ブラウズ」(シークレットモード)で該当ページに再アクセスすることで、リダイレクトの設定を上書きできるとの事。(未確認)
- 参考URL : .htaccessによるリダイレクトをやめてもIE9のみリダイレクトされ続ける
- 古いIEだとキャッシュを削除してもリダイレクトの設定は残るらしい。(未確認)
- 301はあくまでも恒久的な移転。用途によって302(コンテンツが存在するけど移動する)、306(将来のための予約)、307(一時的な移転)などを使用すべき。