首页 > 解决方案 > Laravel 使用 HTTPS

问题描述

我有项目,我在 ubuntu 服务器上安装了 SSL 证书。我已经完成了我找到的所有解决方案,但每次打开页面时仍然收到此消息。

The requested URL /about was not found on this server.

这是我为强制 Laravel 使用 https 所做的更改:

1-我在我的公用文件夹中更改了 .htaccess 并添加了这些行

# Added to Force HTTPS
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

2- 在 app->Providers->AppServiceProvider 我已将此添加到 boot() 函数

if (App::environment() === 'production' || App::environment() === 'dev') {
            URL::forceScheme('https');
        }

3-我创建了 php artisan make:middleware ForceSSL 并将以下代码添加到句柄函数中

 if (!$request->secure() && in_array(env('APP_ENV'), ['stage', 'production'])) {
            return redirect()->secure($request->getRequestUri());
        }

        return $next($request);

并在 Kernal.php

\MyApp\Http\Middleware\ForceSSL::class

在 .env 文件中,我已将 APP_URL 更改为 https://,并且我还在 config 文件夹内的 app.php 中更改了 APP_URL。

我在这里错过了什么?两天后我不知道为什么:(

标签: phplaravel.htaccesslaravel-5laravel-routing

解决方案


您需要确保工作的几件事:

  1. 您的路由是否在没有index.phpurl 的情况下以标准 HTTP 模式工作。就像有时 laravel.com/aboutus 不起作用但 laravel.com/index.php/aboutus 起作用。如果是这种情况,您需要mod_rewrites在 php 中启用,然后添加AllowOverride All您的虚拟主机配置并重新启动 apache。
  2. 来到 HTTPS,您在 laravel 中设置的内容将使 laravel 请求转发到安全的 HTTPS url。但是,您的服务器必须能够侦听、处理和响应 HTTPS 请求。
  3. 您需要启用 yoru virtualhost 来监听443SSL 端口。此外,如果您有 SSL 证书,也需要配置这些证书。
  4. 在知道 laravel 是否支持 HTTPS 之前,先创建一个简单的 php 文件并尝试使用服务器 url 的 HTTPS 访问它。如果可行,那么您可以检查 laravel 中的问题。如果没有,那么您的服务器上没有正确配置 SSL。
  5. 最后,检查.htaccess重写条件。
  6. php artisan config:clearphp artisan route:cache

希望这有助于调试


推荐阅读