CentOS7
nginx Chromeで意図しないリダイレクトが起きた場合の対処†
起きた現象†
Chromeでメンテナンス画面表示のテストを行っていたところ、下記の現象が発生した。
- メンテナンスモードに切り替える
- 該当URLにアクセスしてメンテナンス画面をリダイレクト表示
- メンテナンスモードを解除
- 該当URLにアクセスすると、メンテナンスモード解除済みであるにも関わらず、なぜかメンテナンス画面にリダイレクトされてしまう
nginxの設定では、メンテナンス画面の表示に301リダイレクトを用いたが、Chromeは301リダイレクトのキャッシュを保持する仕様のため、キャッシュを読み取りメンテナンス画面にアクセスしてしまう動作になっていた。
リダイレクトキャッシュの削除方法†
- Chromeの「その他ツール」→「デベロッパーツール」を開き、「Network」タブの「Disable cache」をチェックする
- 該当のURLにアクセスする(リダイレクトされず正しく表示される)
- Chromeの「デベロッパーツール」を開き、「Network」タブの「Disable cache」のチェックをはずす(はずしておかないとキャッシュ動作が一般ユーザー同等じゃなくなる)
- Chrome以外はリダイレクトキャッシュしていないようなので、この現象は起きない
- メンテナンス画面表示にはリダイレクトを用いずに503エラーを返しつつメンテナンス画面表示をするのがベターなようなので、そうしたほうがいいと思います(ページが移動したというわけではないので、リダイレクトは不適切だった)