Laravel

Laravelのrouteがhttpになる【HTTPS化】

Laravelのroute()関数は便利ですが、 初期設定では全てhttpから始まるURLになってしまいます。
httpsに設定する方法です。

app/Providers/AppServiceProvider.php に下記のようにURL::forceSchemeを追記しましょう。

use Illuminate\Support\Facades\App; // 追加
use Illuminate\Support\Facades\URL; // 追加

public function boot() {
    if (App::environment('production','staging')) {
        URL::forceScheme('https');
    }
}

解説

App::environment()にて環境を読み分け、 productionとstagingにのみhttpsを設定しています。
環境の.envファイルのAPP_ENVの値で判定されるので適切に設定しておきましょう。

なお、私の場合はlocalを含めて環境が3つあり、
stagingもhttps環境なので例のようになっていますが、
productionかそれ以外かで判定するような場合は
if (App::isProduction()) {
を使うこともできます。

config()を使ってもいいですが、ここでenv()を使うのは間違いです。
キャッシュしたときに動かなくなります。

参考:https://readouble.com/laravel/9.x/ja/configuration.html
>設定キャッシュ
「開発過程の一環としてconfig:cacheコマンド実行を採用する場合は、必ずenv関数を設定ファイルの中だけで使用してください。
設定ファイルがキャッシュされると、.envファイルはロードされません。」

参考になれば幸いです。

-Laravel