Laravel asset() 如何支援 http & https
在 laravel 使用 asset() 來設定一些 public/ 靜態文檔相關位置
在本機主要使用 http,但是更新到正式機需要ssl 憑證
現在有一個情況是,在使用 laravel asset path ,更新到線上主機仍套用 http
底下說明如何在線上及本地切換 http, https
增加.env環境參數
首先在 .env 新增
REDIRECT_HTTPS = 1 # 0: http, 1: https
設定 forceSchema 觸發條件
接著設定
app\Providers\AppServiceProvider.php
<?php
namespace App\Providers;
use Illuminate\Routing\UrlGenerator;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot(UrlGenerator $url)
{
if(env('REDIRECT_HTTPS'))
{
$url->forceScheme('https');
}
}
透過 APP_ENV 來判斷
以上狀況可能是在於需要透過一個參數來判斷是否導向 https 在多數實際使用時,建議直接透過 APP_ENV 作為判斷依據
在 production 環境執行導向,例如:
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\URL;
use App;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//redirect http to https
if (App::environment('production')) {
Url::forceScheme('https');
}
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}