我需要帮助强制我网站上的 Laravel 5.7 使用 https。
我在共享主机上,今天早上我的托管服务提供商将我所在的服务器从 cPanel 升级到了站点工具。在此过程中,我的自定义 Laravel 应用程序损坏了。
我的托管服务提供商没有提供太多帮助,而且我整天都在搜索论坛并尝试了很多不同的方法,但无济于事。我对 Laravel 不是很了解,我在论坛上看到的一些关于这个参考文件的东西似乎并不存在于我的特定 Laravel 应用程序中。 (我没有开发这个应用程序......绝对高于我的工资。)一些论坛谈论清除缓存,但我无法访问共享主机上的终端来清除缓存。我尝试在 .htaccess 和 .env 中进行调整,但我真的不知道我在做什么。
目前在 Chrome 上的开发工具中,我收到了很多“混合内容”错误。即使站点是 https,CSS 和 JS 资源也在尝试加载 http,并且它们被阻止了。
请帮忙。我很乐意应要求从我的文件中发布代码摘录。
编辑:
我认为我的部分问题是我的 Laravel 应用程序似乎缺少一些通常包含的默认部分。例如,我根本没有“config”文件夹。但我不知道从存储库中获取该文件夹并简单地将该文件夹及其中的文件添加到我的应用程序是否可以解决问题。
编辑:
这是我来自 AppServiceProvider
的 app\Providers\
文件:
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
if(env('APP_ENV') === 'production') {
URL::forceScheme('https');
}
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
答案 0 :(得分:1)
将其放在 AppServiceProvider
方法的 boot()
中
if(env('APP_ENV') === "production") {
\URL::forceScheme('https');
}
如果您使用 https
等 Laravel 网址助手,它将强制您的所有资产为 assts()
。
然后,如果您希望没有人无法访问您的应用程序的 http
版本
那么你需要配置你的服务器
您可以添加.htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
答案 1 :(得分:0)
只需从以下位置更改模板文件中的所有引用:
<script src="http://example.com/js/jquery.js"></script>
到
<script src="//example.com/js/jquery.js"></script>
或
<script src="/js/jquery.js"></script>
如果您使用 Laravel asset() 助手,则需要将架构强制为 https。在最好的情况下,您应该使用 CORS 包,但快速解决方法是将以下内容添加到 AppServiceProvider
:
use Illuminate\Support\Facades\URL;
public function boot()
{
if (env('APP_ENV') === 'production') {
URL::forceScheme('https');
}
}