首页 > 解决方案 > 忽略 Symfony 路由中是否存在斜杠

问题描述

我正在开发基于 Symfony 4.1.0 的微服务,它在 config/routes.yaml 中定义了以下 REST API:

import:
    path: /sip/calls/
    controller: App\Controller\ApiController::import
    methods: [POST]

/sip/calls问题是导致POST 请求NotFoundHttpException(未找到“POST /sip/calls”的路由)。如果我从 config/routes.yaml 中的路由路径中删除尾部斜杠,请求/sip/calls通过,但/sip/calls/停止工作。

为什么它的行为像?如何让它忽略斜线或它的缺失?

标签: phpsymfonysymfony4symfony-routing

解决方案


正如在:Redirecting URLs with Trailing Slashes Symfony 4.1 通过创建重定向 301 来处理这个内部问题。但问题是这个重定向不适用于 POST 请求。

正如这里提到的,理论上为什么 HTTP 没有 POST 重定向,您可以使用重定向 307 或 308,但我过去对此有一些问题,所以我选择了带有斜杠的重复路径的简单解决方案。


推荐阅读