我正在为我的Web应用程序设置端点,如下所示:
$router = new League\Route\RouteCollection;
function user_action (Request $request, Response $response) {
// some logic
.
.
.
return $response;
}
$router->addRoute('GET', '/user', 'user_action');
/ user 端点效果很好。
然而,当我使用 / user / (最后的额外斜线)时,我得到了
联赛\路由\ HTTP \异常\ NotFoundException
我希望两个端点都指向同一个函数。 我可以通过分别为两个端点添加路由来实现所需的行为:
$router->addRoute('GET', '/user', 'user_action');
$router->addRoute('GET', '/user/', 'user_action');
建议的解决方法是什么?
答案 0 :(得分:2)
有两个选项
将以下重写规则添加到.htacces:
RewriteRule ^(.*)/$ /$1 [L,R=301]
从RouteCollection创建路由器后,您将获得调度程序并分派路由:
$router = new RouteCollection();
$dispatcher = $router->getDispatcher();
$response = $dispatcher->dispatch($request->getMethod(), $request->getPathInfo());
可以轻松调整发送给调度员的网址:
$url = $request->getPathInfo();
// if url ends with a slash, remove it
if (substr($url, -1) === '/') {
$url = substr($url, 0, strlen($url) - 1);
}
$response = $dispatcher->dispatch($request->getMethod(), $url);
两种简单的解决方案,您使用哪种解决方案取决于您。