Php 在Laravel 4中使用https访问route::resource

Php 在Laravel 4中使用https访问route::resource,php,routing,resources,laravel,Php,Routing,Resources,Laravel,要在命名路由上强制使用HTTPS,Laravel文档要求执行以下操作: Route::get('foo', array('https', function() { return 'Must be over HTTPS'; })); 现在,在我的第一个Laravel应用程序中,我一直在使用资源控制器。我不认为我会在我的第二个应用程序中使用它们,继续我读到的内容,但现在它们愉快地坐在我的router.php文件中 我想强制我的应用程序的后台部分使用HTTPS。因此,我的开场白如下: Rou

要在命名路由上强制使用HTTPS,Laravel文档要求执行以下操作:

Route::get('foo', array('https', function()
{
    return 'Must be over HTTPS';
}));
现在,在我的第一个Laravel应用程序中,我一直在使用资源控制器。我不认为我会在我的第二个应用程序中使用它们,继续我读到的内容,但现在它们愉快地坐在我的router.php文件中

我想强制我的应用程序的后台部分使用HTTPS。因此,我的开场白如下:

Route::resource('backoffice', array('https','BackofficeController'));
拉威尔不喜欢这个阵列

因此,我想我应该尝试输入下一个参数:

Route::resource('backoffice', 'BackofficeController', 'https'));
但下一个参数需要是数组。我找不到这方面的文档,但我将其转换为数组。它仍然不起作用

Route::resource('backoffice', 'BackofficeController', array('https')));
我甚至试过:

Route::resource('backoffice', 'BackofficeController', array('https'=>true)));

然而,这也失败了。那么,如何强制资源使用https呢?

假设您有一个Andreyco建议的过滤功能,这似乎很好,您可以执行类似的操作:

Route::filter('forceHttps', function($req){
    if (! Request::secure()) {
        return Redirect::secure(Request::getRequestUri());
    }
});

Route::group(['before' => 'forceHttps'], function(){
    Route::resource('backoffice', 'BackofficeController');
});
//Andreyco's filter
Route::filter('forceHttps', function($req){
if (! Request::secure()) {
    return Redirect::secure(Request::getRequestUri());
}
});
//backoffice group routing
Route::group(array('prefix' => 'backoffice', 'before' => 'forceHttps'), function()
{
    Route::any('/',                'App\Controllers\BOindexController@index');
    Route::resource('otherBackOfficeURI', 'App\Controllers\OtherBOController');
    //other routes & controllers here...
});

这样,从site.tld/backoffice开始的所有内容都将通过https筛选器(最有可能通过isAdmin筛选器),然后检查内部函数路由规则。我想这样会更方便。

谢谢您的及时答复。我试过这个,它确实有帮助,但仍然不起作用。如果我浏览到hxxp://mysite/backoffice 它现在确实重定向到hxxps://mysite.backoffice,但是,我仍然收到404错误。抱歉,我在完成之前单击了添加评论。正如我在上面的编辑中所解释的,如果我浏览到hxxp://mysite/backoffice 它现在确实重定向到hxxps://mysite.backoffice,但是,我仍然得到一个404错误。
Redirect::secure(…)
输出的URL是什么?您是否在本地虚拟主机上开发?如果是,URL是什么?我使用
http://projectname.loc
用于我的项目。已测试此解决方案,该解决方案有效。正在生成的url是正确的。如果没有过滤器,并且在本地虚拟主机上进行了测试,那么如果我键入以下内容,我将进入我的后台:
http://mysite.local/backoffice
。但是,如果我应用过滤器并尝试上面的链接,它将被重定向到以下url:
https://mysite.local/backoffice
并生成404错误。此处的服务器配置似乎有问题。