我已经修改了htaccess文件以强制使用尾部斜杠,并且现在希望Laravel中的任何url生成都自动添加斜杠,这样我们就没有那么多的重定向。
# Force trailing slash.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]
然后我创建了一个CustomUrlGenerator类,它扩展了Illuminate \ Routing \ UrlGenerator,我试图覆盖toRoute
函数......
protected function toRoute($route, $parameters, $absolute)
{
$route = parent::toRoute($route, $parameters, $absolute);
return $route . '/';
}
在AppServiceProvider.php
中,我添加了以下代码......
$this->app->bind('url', function($app) {
return new CustomUrlGenerator($app['routes']->getBindings(), request());
});
不幸的是,我认为这会以某种方式破坏应用程序,因为无论何时我尝试使用任何使用此功能的东西,它都找不到路由,可能是因为我在生命周期中设置得太早。
答案 0 :(得分:0)
根据github中的代码,toRoute
为protected
,这意味着您无法将其覆盖为public
,请按以下方式更改代码:
protected function toRoute($route, $parameters, $absolute)
{
$route = parent::toRoute($route, $parameters, $absolute);
return $route . '/';
}