我正在使用Symfony 2.8并配置了通用路由:
// routes.xml
<route id="info_page" path="/info/{page}" methods="GET">
<default key="_controller">MyBundle:Info:showPage</default>
<default key="page">overview</default>
</route>
// Controller
public function showPageAction(Request $request, $page) {
switch ($page) {
case "page1":
$template = "page1.html.twig";
break;
...
default:
$template = "overview.html.twig";
break;
}
$response = $this->render($template, $variables);
return $response;
}
这对于/info/page1
,/info/pageN
,/info/overview
等各种路由都适用,并且/info
显示为默认/概述页面(如预期)。
但是,使用/info/
(斜线)会导致错误404。为什么?为什么/info
不能工作而/info/
不能工作?
答案 0 :(得分:0)
据我所知,Symfony会编译到正则表达式的路由,因此/info/(.*)
将不匹配/info/
并将抛出错误404。
我很困惑/info
如何为您工作,我想您可能已经在其他地方定义了该路由。
Offtopic,尽管/info/
和/info
通常在Internet上可互换使用,但它们是不同路线,而Symfony则将它们视为这样。
直到更新版本的Symfony(4.1)才可以使用这两个变体-阅读here