【问题标题】:Laravel 4.2: Force URL to be rendered as HTTP or HTTPSLaravel 4.2:强制 URL 呈现为 HTTP 或 HTTPS
【发布时间】:2019-01-10 05:16:46
【问题描述】:

我们定义了一个简单的路由,如下所示:

路线

// Home
Route::get('/home', [
    'as' => 'home::index',
    'uses' => 'IndexController@home'
]);

查看

<a href="{{ route('home::index') }}">Home</a>

我们需要在视图中强制我们的链接/路由呈现为 HTTP 或在某些情况下呈现为 HTTPS 路由,例如http://host.domain/homehttps://host.domain/home

我们不能使用URL::forceSchema("http")URL::forceSchema("https"),因为我们需要在 HTTP 页面上强制使用 HTTPS,在 HTTPS 页面上强制使用 HTTP。我们有一个多域应用程序。一些通过 HTTP 运行的域,一些通过 HTTPS。可以在任何地方放置指向不同域/“应用程序部分”的链接。通过 HTTPS 运行的域无法通过 HTTP 访问。在 HTTP 上运行的域无法通过 HTTPS 访问

如何强制将路由呈现为特定的超文本协议?

【问题讨论】:

  • @Heyne 在将问题标记为重复之前,请仔细阅读问题并检查您标记为重复的问题。您标记的答案并不能以任何方式解决此问题。
  • 你如何决定应该使用哪个模式?这似乎不是与视图相关的逻辑。我猜你希望路由回调在通过 http 或 https 调用时产生两种不同的响应,对吗?
  • @Nima 我们有一个多域应用程序。一些通过 HTTP 运行的域,一些通过 HTTPS。可以在任何地方放置指向不同域/“应用程序部分”的链接。通过 HTTPS 运行的域无法通过 HTTP 访问。在 HTTP 上运行的域无法通过 HTTPS 访问。
  • 我认为您可以强制仅通过 http/https 提供路由,这将成为路由的属性,并在生成路由的 url 时使用。这能解决你的问题吗?
  • @Nima 是的,这将解决我们的问题。

标签: php laravel https url-routing laravel-4.2


【解决方案1】:

Laravel documentaion 中有一个部分,标题为 强制通过 HTTPS 提供路由。它没有提到为路由生成的 URL,但我可以在 Illuminate\Routing\UrlGenerator 代码中看到此设置在 getRouteScheme 方法中得到尊重。因此,将新值 http/https 添加到操作数组应该可以解决问题:


强制将路由呈现为 HTTP:

Route::get('/home', [
    'as' => 'home::index',
    'uses' => 'IndexController@home',
    'http'
]);

强制将路由呈现为 HTTPS:

Route::get('/home', [
    'as' => 'home::index',
    'uses' => 'IndexController@home',
    'https'
]);

现在route('home::index') 应该根据您定义的架构生成 URL。

【讨论】:

    猜你喜欢
    • 2021-07-14
    • 2020-04-06
    • 2012-07-11
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多