如何在 laravel 5.4 中实现 HTTPS
Posted
技术标签:
【中文标题】如何在 laravel 5.4 中实现 HTTPS【英文标题】:How to implement HTTPS in laravel 5.4 【发布时间】:2017-10-22 04:04:49 【问题描述】:我与 OVH(France) 共享主机,并且我的域拥有“Let's Encrypt”证书。
但是,我到处寻找在 laravel 5.4 中将所有请求从 HTTP 重定向到 HTTPS
我找到了“.htacces 重定向”的解决方案,但我经常在浏览器上遇到“TOO_MANY_REDIRECT”错误,特别是 Google Chrome。
任何人都有重定向所有的想法 PS:我的共享主机服务器上没有“sudo”权限(只是用户使用 ssh 访问)
问候,
【问题讨论】:
htaccess redirect to https://www的可能重复 【参考方案1】:在不修改.htaccess文件的情况下,你可以在你的Laravel应用中强制添加https协议:
function boot()
URL::forceScheme('https');
... your code
在你的AppServiceProvider.php
。
【讨论】:
谢谢@Troyer,我添加了“使用 Illuminate\Support\Facades\URL;”在 AppServiceProvider 中并且它有效但是,如果我尝试通过删除“https://”来访问我的网站,它不会将我重定向到 https。仅当我单击我网站中的链接以继续登录或关于页面时,重定向到 https 才有效。有什么办法可以强制从http重定向到https(我不再想要http了)提前谢谢你的回答 @aymanesoft 找到了适合您问题的非常好的答案:***.com/questions/28402726/…【参考方案2】:您可以在config/app.php
中设置'url' => env('APP_URL', 'https://localhost'),
。这应该可以解决问题。
【讨论】:
【参考方案3】:除了@Troyer 的回答,我将下面的代码添加到我的.htacces
RewriteEngine on
RewriteCond %HTTPS off [OR]
RewriteCond %HTTP_HOST !^www\.
RewriteRule ^ https://www.example.com%REQUEST_URI [NE,L,R]
现在所有对 HTTP 的请求都被重定向到 HTTPS 而没有“TOO_MANY_REDIRECT”错误 非常感谢你们的回答 最好的问候,
【讨论】:
【参考方案4】:如果您想在您的应用程序的所有 URL 上强制使用 HTTPS,而无需更改您的 Apache
或 nginx
配置,您需要更新您的 AppServiceProvider
,如下所示:
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
/**
* Register any application services.
*
* @return void
*/
public function register()
if (env('APP_ENV') === 'production')
$this->app['url']->forceScheme('https');
PS:如果您在本地开发环境中启用了 SSL,则可以删除该条件。
【讨论】:
以上是关于如何在 laravel 5.4 中实现 HTTPS的主要内容,如果未能解决你的问题,请参考以下文章