【Laravel】リダイレクト先のコントローラーが直接実行されてしまう
事象
とあるリンクをクリックした際に実行されるコントローラー(処理Aと記載)で、redirectして別のコントローラー(処理Bと記載)を実行ような処理を実装した。
上記リンクにてリクエストした際、初回リクエスト時は処理Aが実行されるが、2回目以降は処理Aが実行されず、処理Bが直接実行されるようになってしまった。
原因と対策
redirectを行う際、第2引数にHTTPステータスを指定していなかったことで302リダイレクトになっていることが原因と思われる。第2引数に301を指定したら本事象が解消した。
【変更前】
return redirect(URI);
※第2引数にステータスコードをしていしていない場合デフォルトで302リダイレクトとなる模様
【変更後】
return redirect(URI, 301);
以上