强制Laravel使用HTTPS版本

时间:2018-05-02 12:14:15

标签: php laravel ssl https pagination

我有一个laravel网站,我正试图让所有工作都使用SSL。 虽然看来Laravel想要使用http代替。 例如,我使用form元素,该方法自动发送到http。同样的事情使用内置的stylescript链接,我将其全部更改为静态工作(常规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&amp;search=&amp;page=2" rel="next">»</a>
</li>
</ul>

知道如何将其更改为https吗? 谢谢!

4 个答案:

答案 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');
}