我需要帮助迫使Laravel 5.7在我的网站上使用https。
我在一个共享主机上,今天早上我的主机提供商"升级"了。我从cPanel到站点工具的服务器。在这个过程中,我的自定义Laravel应用程序坏了。
我的主机提供商没有提供太多帮助,我整天都在论坛上搜索,尝试了很多不同的东西都无济于事。我对Laravel不是很了解,我在论坛上看到的一些关于这个参考文件的东西似乎并不存在于我的Laravel应用程序中(我没有开发这个应用程序……绝对超出了我的工资等级)。一些论坛讨论清除缓存,但我没有访问共享主机上的终端来清除缓存。我试着在。htaccess和。env中进行调整,但我真的不知道我在做什么。
目前在开发工具上的Chrome我得到了很多"混合内容";错误。CSS和JS资源试图加载http,即使网站是https,他们被阻止了。
请帮助。如有需要,我很乐意将我文件中的代码摘录贴出。
编辑:
我认为我的部分问题是,我的Laravel应用程序似乎缺少几个默认的部分,通常包括。例如,我没有"配置"文件夹。但我不知道是否从存储库中抓取该文件夹并简单地将该文件夹和其中的文件添加到我的应用程序中可以解决问题。
编辑:
这是我的AppServiceProvider
文件从appProviders
:
<?php
namespace AppProviders;
use IlluminateSupportServiceProvider;
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()
{
//
}
}
将此置于boot()
方法中的AppServiceProvider
if(env('APP_ENV') === "production") {
URL::forceScheme('https');
}
如果你使用像assts()
这样的laravel url helper,它会强制你所有的资产到https
。
如果你想,没有人可以访问http
版本的应用程序
那么你需要配置你的服务器
你可以添加.htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
只需更改模板文件中的所有引用:
<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() helper,你需要强制模式为https。在最好的情况下,您应该使用CORS包,但快速修复方法是将以下内容添加到AppServiceProvider
:
use IlluminateSupportFacadesURL;
public function boot()
{
if (env('APP_ENV') === 'production') {
URL::forceScheme('https');
}
}