代码之家  ›  专栏  ›  技术社区  ›  Andrei Herford

Symfony 2.8中的通用路径-为什么尾随斜杠的“空”页面不匹配?

  •  0
  • Andrei Herford  · 技术社区  · 6 年前

    我正在使用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。为什么?为什么 /信息 工作时间 /信息/ 不是吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Небојша Камбер    6 年前

    据我所知,Symfony编译正则表达式的路由,所以 /info/(.*) 不匹配 /info/ 并将抛出错误404。

    我不知道该怎么做 /info 对你有用,我猜你可能在其他地方定义了这条路线。

    尽管是离题的 /信息/ /信息 通常在互联网上互换使用,它们是 不同的 routes和Symfony也这样对待他们。

    直到Symfony(4.1)的更新版本,这两个变体才可以使用——read here