如何在 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,而无需更改您的 Apachenginx 配置,您需要更新您的 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的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.4 Auth Guardian 驱动程序 [customers] 未定义

如何在 laravel 中实现 vuetify?

如何使用 Laravel 在网站中实现 OCR

如何在 Laravel 网站中实现主题选项?

如何在 laravel 5.1 中实现“记住我”?

Laravel 5.4:如何遍历请求数组?