Laravel SSL直接查询参数?

时间:2014-06-13 16:59:35

标签: laravel-4

我目前使用:

Route::filter('no.ssl', function()
{
    if( Request::secure())
    {
        return Redirect::to(Request::path(), 302, array(), false);
    }
});

问题来自于这部分:

Request::path()

如果用户访问的网址是:

example.com/bla?p=1

然后它将重定向到:

example.com/bla

如何包含查询参数?

我看了here,并且没有明显的方法来包含查询参数。

2 个答案:

答案 0 :(得分:0)

更新的API文档位于此处:http://laravel.com/api/4.2/

如果你查找Request类,你会找到一个fullUrl()方法,它应该做你想要的。

编辑:以上内容不正确!这应该工作但更冗长。我会把它作为辅助方法/函数添加到某个地方。

if (null !== $qs = $request->getQueryString()) {
    $qs = '?'.$qs;
}
return $request->getBaseUrl().$request->getPathInfo().$qs;

答案 1 :(得分:0)

这解决了我的问题:

Route::filter('force.ssl', function()
{
    if( ! Request::secure())
    {
        return 
            Redirect::secure(
                Request::path().(empty($_SERVER['QUERY_STRING']) ? '' : '?'.$_SERVER['QUERY_STRING'])
            );
    }
});

Route::filter('no.ssl', function()
{
    if( Request::secure())
    {
        return Redirect::to(
            Request::path().(empty($_SERVER['QUERY_STRING']) ? '' : '?'.$_SERVER['QUERY_STRING']), 302, array(), false
        );

    }
});