Php Laravel安全重定向筛选器在本地工作,但在服务器上不工作

Php Laravel安全重定向筛选器在本地工作,但在服务器上不工作,php,laravel,laravel-4,Php,Laravel,Laravel 4,我有一个过滤器,可以将用户重定向到网站的https://部分。我已经在我的本地网站上测试过了,它正常工作,但当我在现场网站上测试时,它根本不工作 你知道为什么会这样吗?我的本地计算机正在使用运行在Windows 7上的XAMPP。我的服务器是CentOS 6 这是我的过滤器 Route::filter('secure', function() { if(!Request::secure()) { return Redirect::secure(Request::p

我有一个过滤器,可以将用户重定向到网站的https://部分。我已经在我的本地网站上测试过了,它正常工作,但当我在现场网站上测试时,它根本不工作

你知道为什么会这样吗?我的本地计算机正在使用运行在Windows 7上的XAMPP。我的服务器是CentOS 6

这是我的过滤器

Route::filter('secure', function()
{
    if(!Request::secure())
    {
        return Redirect::secure(Request::path());
    }
};
我的路线呢

Route::group(array('before' => 'secure', 'prefix' => '{regionSlug}/{parkSlug}'), function(){
    // List of routes go here.
});
编辑:在进一步查看之后,我注意到它在我的本地服务器上也不能正常工作。它工作的唯一原因是因为我的登录检查重定向并转移到站点的https部分。此路由组中的任何其他页面实际上都不起作用。我在每个get和post路由中取出了https,这成功地修复了它。

顺便说一句 强制通过HTTPS提供路由服务

Route::get('foo', array('https', function()
{
    return 'Must be over HTTPS';
}));

这可能是你的答案

Route::filter('secure', function()
{
    if(!Request::secure())
    {
        return Redirect::secure(Request::path(URL::to('/')));
    }
};

你试过在你的网站上调试吗?路由::get('zz',function(){dd(Request::secure());});返回什么?
Request::secure()
检查服务器设置的
HTTPS
环境变量的内容。您还可以在您的实时环境中(在测试页面上)通过HTTPS尝试
dd($\u服务器)
,以确保变量设置正确。此外,如果您的网站位于提供SSL的代理之后,您可能需要在那里进行额外的配置,以确保您的应用程序服务器知道这一点。它在http://上进行了检查,结果显示为false。在https://上,这是真的。因此,它通过它的外观来正确地检测它。SSL来自外部站点,但我仍然认为它能够重定向到https://.Thank 谢谢您的评论,但我已经在我的组路线中对路线进行了此操作。:)您的欢迎您的secure::path()没有要转到的根url,现在有了。试一试。出于某种原因,在route get方法中添加https就是停止重定向的原因,在我取出它的那一刻,它就开始重定向到https。我一直在关注这一点,这是有道理的。将https放在浏览器上,从不让浏览器转到它来触发安全过滤器。因此它失败了。但是如果你用Ajax到达那个路径,重定向将不起作用,我想你也应该考虑一下。抛出一个禁止的或其他东西我想知道为什么get方法中的https不能自动执行这些检查。我本以为应该这样做。无论如何,谢谢你在这件事上帮助我。:)