Chrome で 301 リダイレクトが解除できないときの対処方法
再追記( 2018/03/13 ): Developer Tools (開発者ツール)を表示した状態でブラウザのリロードボタンを右クリックすると「キャッシュの消去とハード再読み込み」という項目が現れるので、これをクリックする形でも、リダイレクトキャッシュの削除が可能なようです。 この方法は Disqus のコメントで Yoshiki T さん に教えていただきました。 インタフェースが英語になってしまっていますが、私の環境でも確認することができたのでキャプチャを載せておきます。
追記( 2017/03/04 ): 下記の「キャッシュの削除方法その 2: 個別に削除」の方法は Chrome のバージョンアップにより使えなくなったようです。 Developer Tools の「 Settings - Preferences - Network 」というところを掘っていくと「 Disable cache (while DevTools is open) 」という項目がありこれが使えるように思えますが、私が試したところではこの項目を有効にしてもリダイレクトのキャッシュは無効にはなりませんでした。
Mac で Google Chrome を使っていてこの問題に遭遇したので書き留めておきたいと思います( Chrome の仕様が原因なので Windows でも発生するはずです)。
問題
Chrome で 301 リダイレクトが行われているページに一度アクセスすると、その後そのページのリダイレクト設定が解除された後も Chrome でアクセスするとリダイレクトが効き続けて強制的にリダイレクトされてしまいます。
原因
原因は、 Chrome が 301 リダイレクトをキャッシュしてしまうことです。 私が個人的に確認したりウェブで他の人の意見を見たりするかぎり、 Safari や Firefox では発生せず Chrome でのみ発生するので Chrome 独自の仕様のようです。
対処方法
リダイレクト情報を Chrome がキャッシュしているために発生しているのでそのキャッシュを削除すれば OK です。
Chrome キャッシュの削除は次の 2 通りの方法で行うことができます。
キャッシュの削除方法その 1: まとめて削除
ひとつめの方法は時間指定でキャッシュをまとめて削除する方法です。
Chrome の設定画面の「 Clear browsing data... 」というところを開いて「 Cookies and other site and plugin data 」という項目にチェックを入れてキャッシュをクリアします。 対象期間は対象ページのキャッシュ( 301 リダイレクトのキャッシュ)が削除されるように適切に設定しましょう。
この画面は設定画面からリンクを辿っていくこともできますが、下記の URL でもアクセス可能です。
chrome://settings/clearBrowserData
ちなみに Chrome 内に現在保存されているキャッシュの一覧は次の URL から確認することができるようです。
chrome://view-http-cache
Chrome のバージョンが古い場合は次の URL になります。
chrome://cache
キャッシュの削除方法その 2: 個別に削除
追記( 2017/03/04 ): 冒頭で述べたとおり、この「その 2 」の方法は Chrome のアップデートにより使えなくなったようです。
もうひとつの方法は、個別のページに対してのみキャッシュを削除する方法です。
こちらはショートカットなくはなく、手作業で削除する形になります。 ステップは下記のとおりです。
- 新しいタブを開く
- Developer Tools (デベロッパーツール)を開く
- Developer Tools の設定エリアを開く(本稿執筆時点では、右上の三点のアイコンをクリックして Settings をクリックすれば開きます)
- 「 General 」のタブを選択する
- 「 Disable cache (while DevTools is open) 」という項目にチェックを入れる
- 対象ページを開く
- リダイレクト設定が解除されていることを確認
- Developer Tools を閉じる
6 のタイミングで古いキャッシュがクリアされるので、その後は通常どおりにアクセスすればリダイレクト設定に悩まされることはなくなります。
...
1 と 2 のいずれの方法でもよいのでキャッシュを削除すれば OK です。 以上です。
SSL 化の場合は HSTS が原因の場合も
ちなみにサイトを SSL 化して http を https にリダイレクトしている場合は、 301 リダイレクト設定の他に HSTS (HTTP Strict Transport Security) の設定でも https にリダイレクトされることがあります。
こちらも有効期限の設定によって http が https にリダイレクトされるのを解除できないことがあるので、その場合は HSTS の設定を削除あるいは有効期限切れになるようにするとよいかと思います。
HSTS の設定の解除方法はブラウザによって異なります。 英語ですが次のページがわかりやすいのでお困りの方は参考にしてみてください。
ちなみに Chrome の場合は次の URL で HSTS の設定ページを開き「 Delete domain 」のところに対象ドメインを入力して「 Delete 」をクリックすれば HSTS の設定をクリアすることができます。
chrome://net-internals/#hsts