Laravelのリダイレクト処理で強制的にhttpsにする方法
- 2025年5月22日
- 技術情報
以下のように結果画面へ一時リダイレクトをかける場合に、httpsスキームが引き継がれない場合があります。
return redirect('result', 307);
その場合、以下のようにsecure()を使えば、常にhttpsへリダイレクトされます。
return redirect()->secure('result', 307);
JavaScriptのassetなどを読み込む際に以下のようにbladeディレクティブを使用する場合もhttpsスキームが引き継がれない場合があります。
<script src="{{ asset('common/js/xxxx.js') }}"></script>
その場合はLaravelのヘルパー関数 secure_asset() を使用することでhttpsでassetを読み込むことが可能になります。
<script src="{{ secure_asset('common/js/xxxx.js') }}"></script>
プロジェクト全体に対してグローバルに https を強制させたい場合は、Laravelの AppServiceProvider で設定が可能です。具体的には以下のように記述することですべての url() や asset() などが https を前提に生成されるようになります。
use Illuminate\Support\Facades\URL;
public function boot()
{
if (app()->environment('production')) {
URL::forceScheme('https');
}
}
上記の例では、environment(‘production’)で本番環境のみ、httpsを強制するように設定しています。
木曜日担当:nishida
nishida at 2025年05月22日 10:00:00