【发布时间】:2017-04-20 20:21:21
【问题描述】:
如何让 Laravel 5.3 创建带有斜杠的路由 URL?
路由定义为
Route::get('/home/', ['as' => 'home', 'uses' => 'HomeController@index']);
然后我在视图中使用路由辅助函数创建 url:
{{ route('home') }}
这会创建http://localhost:8000/home 而不是http://localhost:8000/home/。
这个问题与Laravel - append a trailing slash in routes 非常相似,但这个问题也没有答案,而且在我看来我的描述要短一点。
编辑: 文档中的两种可能的命名方法没有区别:
Route::get('/home/', ['as' => 'home', 'uses' => 'HomeController@index']);
Route::get('/home/', 'HomeController@index')->name('home');
【问题讨论】:
-
当您访问带有斜杠的那个时会发生什么? afaik 它将重定向到其他地方。它的解决方案之一是this so answer
-
只要网络服务器不重定向 laravel 就会响应请求。
-
这与
.htaccess有关。正如在this question 中讨论的那样,您必须在公共目录中编辑您的.htaccess。虽然...in a certain discussion -
我深入了解了
UrlGenerator,并为此考虑扩展它,即更改其format()方法,该方法去除了斜杠。不幸的是,我意识到 Laravel 对它不够灵活,所以不可能用花哨的方式来做。 Laravel 甚至在注册UrlGenerator本身之后,在运行时就在UrlGenerator上注册了一些魔法。老实说,这个功能设计得很糟糕。因此,您唯一的机会是创建自己的助手(或覆盖现有的route()助手)。