【问题标题】:laravel serve a page using http instead of httpslaravel 使用 http 而不是 https 提供页面
【发布时间】:2014-09-16 21:12:42
【问题描述】:

我有一个这样的过滤器

if( ! Request::secure())
    {
        return Redirect::secure(Request::path());
    }

此过滤器使我网站的每条路由都通过 https 提供服务,这很好,除了一种情况。我有一条路线,它提供来自第三方服务器的内容(可以嵌入)。这些可嵌入的内容都是http。

我想使用 http 而不是 https 来提供这条路线。有没有办法,我可以使用 laravel 做到这一点。

谢谢

【问题讨论】:

  • 致,所有编辑,请不要不赞成更改。必须做出改变。因为 page 不是正确的术语,而 route 是。谢谢

标签: laravel laravel-4 laravel-routing


【解决方案1】:

你可以使用Request::url()

if(( ! Request::secure()) && (Request::url() !== '/your/single/page'))
{
    return Redirect::secure(Request::path());
}

【讨论】:

  • 对不起 - 我没有以适当的方式写下我的问题。我现在已经这样做了。而不是一个页面(我之前说过),我想知道我是否可以仅将 Http 用于这条路线而不是整个网站。再次道歉。
【解决方案2】:

为了以不同的方式处理路由,您可以使用这样的路由定义:

Route::group(["before" => "test"], function()
{
     Route::get('path/to/route', array('as' => 'routeName', 'uses' => 'routeController@doSomething'));
});

然后在您的filters.php 文件中添加:

Route::filter('test', function()
{
    if( Route::currentRouteName() == 'routeName')
    {
        return Redirect::to('http://example.com');
    }
});

更多关于命名路线的信息可以在这里找到:http://laravel.com/docs/routing#named-routes

【讨论】:

  • 也这样做了..但在我的 filters.php Route::currentRouteName 为空。因此我认为 if 循环不会被尊重!
  • 是的 .. 我的想法原来是真的。我最终尝试了指定的内容,但没有成功。
  • 抱歉,您必须先将路线嵌入过滤器中。我已经更新了我的答案,并在这里做了一个快速成功的测试。
  • 不适合我。我现在得到一个方法未找到异常,而协议仍然是 https
  • 好的,它在我这边工作,但我可能有不同的设置。我再次编辑了我的答案,以专注于您要重定向的一条路线。但这实际上是获取一些外部内容的复杂方法。您可能只想在代码中使用url('http://example.com/bar') 中的 URL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-09
  • 2012-10-01
  • 2017-04-12
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
  • 2011-07-06
相关资源
最近更新 更多