はじめに
学習のためにALBのリスナールールのactionを変更して、pathによって、いろんなwebサイトにリダイレクトさせていました。
そんな時にactionの設定値を変更したのにも関わらず、遷移画面が変わらないという沼にハマりました。
結論は単純なものだったのですが、備忘録として残したいと思います。
構成図・前提条件
EC2インスタンスには簡易なwebアプリが動いています。
通常通りにアクセスでき場合はこのようなトップ画面遷移します。
まずリスナールールを次のように設定しました。
URLのパスが/のリクエストを送信するとGoogleのページへ遷移させる設定です。
ブラウザにアプリのURLを打ち込んでみます。
このようにGoogleに遷移しました。
ここからさらにリスナールールのactionを変更し、さらに違うwebサイトへ遷移するように設定してみます。
課題
リスナールールのリダイレクト先を変更しました。
ブラウザにアプリのURLを打ち込んでみます。
しかし、リダイレクト先は変わりません。
どうしてだ・・・・
仮説
-
リスナールールの設定誤り
シンプルにリスナールールが誤っており、リダイレクトができていない可能性を考えました。
でも、その場合でも前の設定にリダイレクトされるのはおかしい・・・ -
ブラウザにキャッシュが残っている
302は一時的なリダイレクトなのに対し、301は恒久的なリダイレクトなので強くキャッシュが残っているのではないかと思いました。このキャッシュを削除しなければいけないという仮説です。
解決
リスナールールに間違いはなさそうだったのでブラウザのキャッシュを疑いました。
結果としてビンゴで、chromeブラウザのキャッシュによって引き起こされていることがわかりました。
解決する方法は次のとおりです。
-
デベロッパーツールを開きます。
デベロッパーツールの開き方はWindowsであれば F12キー、MacOSであればCommand+Option+Iキー。
右クリックから「検証」をクリックしても開くことができます。
これでchromeのキャッシュが削除されているはずです。
ブラウザに再度ドメインを入力してみましょう。
無事画面が遷移しました。
おわりに
調べてみると301リダイレクトはブラウザにキャッシュされ、302等であればブラウザにキャッシュされないようです。
301リダイレクトでも、ヘッダにおいて
Cache-Control: no-store
を設定すればキャッシュされなくなるようですが、302リダイレクトにすれば事足りるようですね。
参考