我正在为我的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 /(最后加反斜杠)时,我得到了
League \ Route \ Http \ Exception \ NotFoundException
我希望两个端点都指向相同的功能。我可以通过分别为两个端点添加路由来实现所需的行为:
$router->addRoute('GET', '/user', 'user_action');
$router->addRoute('GET', '/user/', 'user_action');
建议的解决方法是什么?
有两种选择
将以下重写规则添加到您的.htacces:
RewriteRule ^(.*)/$ /$1 [L,R=301]
从RouteCollection创建路由器后,您将获得调度程序并调度路由:
$router = new RouteCollection();
$dispatcher = $router->getDispatcher();
$response = $dispatcher->dispatch($request->getMethod(), $request->getPathInfo());
发送到调度程序的URL可以很容易地进行调整:
$url = $request->getPathInfo();
// if url ends with a slash, remove it
$url = rtrim($url, '/');
$response = $dispatcher->dispatch($request->getMethod(), $url);
有两种简单的解决方案,取决于您使用哪种解决方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句