Laravel 4强制SSL而不会丢失参数

时间:2016-04-01 21:39:20

标签: laravel laravel-4

我正在使用laravel过滤器将传入的http重定向到https

            // SSL
            Route::filter('force.ssl', function()
            {
                if( ! Request::secure())
                {
                    return Redirect::secure(Request::path());
                }

            });

并在控制器中

        $this->beforeFilter('force.ssl'); 

当问题http是这样时,问题就出现了 http://myweb.com?cod=123&page=2它会重定向到https://myweb.com/并丢失参数?cod=123&page=2如何强制使用SSL并保留参数? 感谢。

我正在使用laravel 4

2 个答案:

答案 0 :(得分:0)

答案很简单就是这个。

将此添加到您的filters.php:

App::before(function($request)
{
    //
    if( ! Request::secure() )
    {
        return Redirect::secure( Request::path() );
    }
});

这会使每个请求都成为https。

答案 1 :(得分:0)

我使用类似于@osleonard的东西,但它删除了URL中的GET参数,所以我想出了这个snippit。

将它放在您的filters.php文件中,并且在保留URL参数的同时将强制要求https:

//force ssl
App::before(function () {
if(!Request::secure() && App::environment() != 'local')
{
    $baseHost = Request::getHttpHost();
    $requestUri = Request::getRequestUri();
    $newLink = 'https://'.$baseHost.$requestUri;

    return Redirect::to($newLink);
}});