php - 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。
我在这里错过了什么?两天后我不知道为什么:(
解决方案
您需要确保工作的几件事:
- 您的路由是否在没有
index.php
url 的情况下以标准 HTTP 模式工作。就像有时 laravel.com/aboutus 不起作用但 laravel.com/index.php/aboutus 起作用。如果是这种情况,您需要mod_rewrites
在 php 中启用,然后添加AllowOverride All
您的虚拟主机配置并重新启动 apache。 - 来到 HTTPS,您在 laravel 中设置的内容将使 laravel 请求转发到安全的 HTTPS url。但是,您的服务器必须能够侦听、处理和响应 HTTPS 请求。
- 您需要启用 yoru virtualhost 来监听
443
SSL 端口。此外,如果您有 SSL 证书,也需要配置这些证书。 - 在知道 laravel 是否支持 HTTPS 之前,先创建一个简单的 php 文件并尝试使用服务器 url 的 HTTPS 访问它。如果可行,那么您可以检查 laravel 中的问题。如果没有,那么您的服务器上没有正确配置 SSL。
- 最后,检查
.htaccess
重写条件。 php artisan config:clear
和php artisan route:cache
希望这有助于调试
推荐阅读
- java - 将配置解析为 Junit5 测试
- powershell - 通过 Gmail SMTP 从 Powershell 发送邮件
- .net - 理解 Angular--Asp.Net Core Stack
- machine-learning - 使用 PDPBox 时显示掉落的假人
- javascript - 浏览器窗口宽度的响应变量 [JavaScript]
- spring - JPA 从数据库而不是从缓存中获取实体
- javascript - vscode显示图像和我的电子APP显示图像不同在哪里?
- java - 将类或接口转移到另一个项目或计算机的最佳实践是什么?
- dpdk - DPDK IPsec安全策略中优先级字段的意义
- c# - 如何基于四个 vector3 点旋转对象?