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ファイルはロードされません。」
参考になれば幸いです。