如何在Laravel 4中将一条路由重定向到HTTPS,将所有其他路由重定向到HTTP?

时间:2015-04-10 14:44:39

标签: http ssl laravel-4 https

我想在我的网站上以“HTTPS”的形式提供结帐页面,但我网站上的所有其他网页都需要保留“HTTP”。我的SSL证书已正确安装,SSL路由在我的服务器上正常运行。

我在filters.php中添加了两个函数:一个函数强制ssl(force.ssl),一个函数(no.ssl)将页面作为http。

Route::filter('force.ssl', function()
{
if( ! Request::secure() && App::environment() !== 'local')
{
return Redirect::secure(Request::getRequestUri());
}
});

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

我在routes.php中添加了以下路由。

Route::when('checkout/getpaymentpage/*', 'force.ssl');
Route::when('/*', 'no.ssl');

结帐页面正被重定向到HTTPS页面,但是,如果用户通过单击导航栏中的链接决定导航到我网站上的其他页面,则下一页面也将作为HTTPS页面提供而不是作为HTTP页面。即使我明确添加了一条路径,将所有其他页面显示为非HTTP(no.ssl)。

我不确定我在这里做错了什么?如何确保只将我的结帐页面作为HTTPS提供?

1 个答案:

答案 0 :(得分:0)

为什么不将整个网站设为HTTPS?

您将获得Google的免费搜索引擎优化:http://googlewebmastercentral.blogspot.com.au/2014/08/https-as-ranking-signal.html

现实情况是,服务器开销没有真正的变化。

否则你做了很多工作去反对目前的趋势,使整个网站成为https ...