【发布时间】:2017-04-29 15:11:33
【问题描述】:
我正在重新设计使用自定义代码构建的旧网站,现在我们使用 Laravel 框架(版本 5.3)。问题是旧网站的所有链接都带有斜杠。它具有出色的 SEO 和来自搜索引擎的许多访问,因此删除尾部斜杠不是选项。
在我的 routes/web.php 文件中,我有以下路线:
$router->get('texts/', 'TextController@index');
$router->get('texts/{slug}/', 'TextController@category');
$router->post('texts/search/', 'TextController@searchPost');
$router->get('texts/search/', 'TextController@search');
在带有斜杠的 html/blade 视图上显示链接不是问题,问题是重定向到路由链接。
App/Http/Controllers/TextController.php
public function searchPost()
{
...
return $this->response->redirectToAction('TextController@search');
}
这会将我重定向到“texts/search”而不是“texts/search/”。是否有任何选项可以在 Laravel 中打开/关闭尾随斜杠或一些 hacky 方法来解决这个问题? .htaccess 重定向不是解决方案,因为它增加了一个重定向并减慢了网站速度。
【问题讨论】:
-
您尝试命名路线了吗?试试看并使用此代码重定向 $this->response->redirect->route('route_name')
-
是的,同样的问题,看起来 Laravel 在 redirectToAction() 和 redirectToRoute() 方法上使用了 rtrim('/')。有没有不修剪斜线的重定向方法?
-
不,它不起作用:S 看起来我需要重写一些核心 Laravel 类,比如 Redirector...