在Laravel 5.8项目上生产时,我在AppServiceProvider
中使用以下代码来强制HTTPS:
if(App::environment() === 'production') {
URL::forceScheme('https');
}
我对forceScheme()
的理解是,它没有进行任何重定向,只是在链接开始时将http
换成了https
。
我正在通过Laravel Telescope监视页面加载,并且对于每个请求,它还会发出以下附加请求:
所以有2个问题。我对forceScheme()的理解不正确吗?无需在Laravel 5.8上重新加载即可实现HTTPS的最佳方法是什么?
答案 0 :(得分:0)
您可以使用.htaccess
轻松地做到这一点。打开您的公用文件夹,并将以下代码放入.htacess文件中:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
另一种解决方案:
if (env('APP_ENV') === 'production') {
$this->app['request']->server->set('HTTPS', true);
}
希望有帮助。
答案 1 :(得分:0)
将其添加到您的 AppserviceProvider 或为此创建中间件
if($this->app->environment('production')) {
URL::forceScheme('https');
}
或使用.htaccess
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]