我有一个laravel网站,我正试图让所有工作都使用SSL。
虽然看来Laravel想要使用http代替。
例如,我使用form
元素,该方法自动发送到http。同样的事情使用内置的style
,script
链接,我将其全部更改为静态工作(常规ol' HTML)。我无法解决的最后一件事是分页(使用jscroll)。
我有这一行:
{!! $plugins->appends(['tag' => $param2, 'search' => $param1 ])->render() !!}
打印出来:
<ul class="pager">
<li class="disabled"><span>«</span></li>
<li class="jscroll-next-parent" style="display: none;"><a href="http://siteurl.net/pagename/page/?tag=XXX&search=&page=2" rel="next">»</a>
</li>
</ul>
知道如何将其更改为https吗? 谢谢!
答案 0 :(得分:9)
试试这个,转到AppServiceProvider将此代码放在引导方法中:
\URL::forceScheme('https');
班级:
namespace App\Providers;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
URL::forceScheme('https');
}
}
其他方式是强制执行.htaccess:
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
请记住在浏览器中清除缓存(然后htaccess将正常工作)。
祝你好运!答案 1 :(得分:1)
如果仅想生成https路由(但仍允许纯HTTP请求),请更改AppServiceProvider:
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
URL::forceScheme('https');
}
}
如果要将任何http请求重定向到https,请添加一个全局中间件:
class ForceHttpsMiddleware{
public function handle($request, Closure $next){
if (!$request->secure() && App::environment() === 'production') {//optionally disable for localhost development
return redirect()->secure($request->getRequestUri());
}
return $next($request);
}
}
答案 2 :(得分:0)
我通过在Canflare上强制执行SSL来完成所有工作。它不在代码中,但它可以工作。
答案 3 :(得分:0)
forceScheme是错误的,应该是forceSchema,您应该找到AppServiceProvider并在启动功能下添加:
\URL::forceScheme('https');
这意味着它将
public function boot()
{
\URL::forceSchema('https');
}