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