Laravel 4:获取 URL::route 以返回 HTTPS URL,而不在路由中强制执行 HTTPS

Posted

技术标签:

【中文标题】Laravel 4:获取 URL::route 以返回 HTTPS URL,而不在路由中强制执行 HTTPS【英文标题】:Laravel 4: Getting URL::route to returns a HTTPS URL without enforcing HTTPS in the routes 【发布时间】:2014-01-03 19:51:58 【问题描述】:

我希望我网站上的所有链接都使用 HTTPS;但是我不能(出于非技术原因)强迫用户使用 HTTPS。因此,我希望 Laravel 生成的所有 URL 都以“https”为前缀,但我不希望 Laravel 在用户通过“http”访问 URL 时抛出异常。

我有以下路线设置:

Route::get('dashboard', [ 'uses'=>'DashboardController@view' ]);

谁能告诉我如何让 URL::route('dashboard') 返回 URL 的 HTTPS 版本,而无需将我的路由重写为:

Route::get('dashboard', [ 'https', 'uses'=>'DashboardController@view' ]);

或者如何按照第二个示例编写我的路由,但如果通过“http”访问则不会引发异常?

【问题讨论】:

我会使用 mod_rewrite ***.com/questions/4398951/… 抱歉 – 确认我没有试图阻止用户通过 HTTP 访问该站点 – 我正在尝试更改 URL::route 的响应,使其返回安全链接,而不添加“https” ' 作为路由的参数。 嘿,尼尔,我同意。我需要知道如何强制 URL::route 创建安全链接,因为我们的负载均衡器正在执行 HTTPS,然后将请求作为标准 HTTP 传递给我们的服务器。这里的cmets不回答这个问题。希望有人能帮忙!! 嗨@Artistan。我深入研究了源代码来看看这个。由于它目前是建造的(或者至少是 3 个月前建造的),所以没有办法做到这一点。现在我会再看一下我们有 4.1 的版本,看看是否有任何变化——或者我是否可以想出一个补丁来提交以允许它。 显然有一个服务器配置可以让服务器像 https 一样工作,即使它不是。所以我有一个“修复”,谢谢! 【参考方案1】:

要使用 URL::route 在 laravel 刀片视图中创建 https 链接,只需使用:URL::secure()

http://cheats.jesse-obrien.ca/#urls

URL::secure('foo/bar', $parameters);
URL::secureAsset('css/foo.css');
URL::to('foo/bar', $parameters, $secure);

【讨论】:

以上是关于Laravel 4:获取 URL::route 以返回 HTTPS URL,而不在路由中强制执行 HTTPS的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Redirect::route() 在 vhost 上转到错误的 url

我在 Laravel 中收到一个不寻常的 url 错误

在 Laravel 路由上设置协议

如何在 Javascript Laravel Blade 中编写路由 URL?

错误-视图中未定义路由-> Laravel

如何在 laravel 5.8 中将变量传递给路由?