Php Symfony路由:为什么Symfony重定向我的POST请求?

Php Symfony路由:为什么Symfony重定向我的POST请求?,php,apache,symfony,http,Php,Apache,Symfony,Http,我的Symfony应用程序出现了一种奇怪的行为。我使用一个控制器作为facebook的webhook,在那里我希望有一个post请求 Web服务器的My access.log向我显示以下内容: [/Mar/2017:11:48:50 +0100] "POST /app_dev.php/bot HTTP/1.1" 301 3810 "-" "-" [/Mar/2017:11:48:50 +0100] "GET /app_dev.php/bot/ HTTP/1.1" 200 476 "-" "-"

我的Symfony应用程序出现了一种奇怪的行为。我使用一个控制器作为facebook的webhook,在那里我希望有一个post请求

Web服务器的My access.log向我显示以下内容:

[/Mar/2017:11:48:50 +0100] "POST /app_dev.php/bot HTTP/1.1" 301 3810 "-" "-"
[/Mar/2017:11:48:50 +0100] "GET /app_dev.php/bot/ HTTP/1.1" 200 476 "-" "-"
因此,我假设我的应用程序确实以某种方式将POST请求重定向到GET请求。我不知道该从哪里开始找

我的胭脂看起来像这样:

backend:
    resource: "@BackendBundle/Controller/"
    type:     annotation
    prefix:   /backend

bot:
    resource: "@BotBundle/Controller/"
    type:     annotation
    prefix:   /bot

# redirecting the root
root:
    path: /
    defaults:
        _controller: FrameworkBundle:Redirect:urlRedirect
        path: /backend
        permanent: true
以及BotBundle中的我的控制器:

/**
 * @Route("/")
 * @param Request $request
 * @return Response
 */
public function indexAction(Request $request)
{
  $logger = $this->get('logger');
  $logger->info('REQUEST METHOD: '.$request->getMethod());
只有日志获取请求,POST请求从未显示,我只在access.log中看到301

也许这和apache有关

有人知道我如何调试这个吗


提前谢谢

在Symfony中,带或不带尾随斜杠的路线是同一条路线。但是,为了获得正确的路径,您将得到一个带有尾部斜杠的路径


由于您正在发布到
/app_dev.php/bot
,您将被重定向到带有尾部斜杠的
/app_dev.php/bot/
。这里的问题是,HTTP规范规定,当帖子获得重定向时,浏览器应该遵循重定向,更改动词GET,以避免幂等性问题。

显示BotBundle/Controller.phpTry的其余部分,直接发布到
/bot/
(包括尾部斜杠),而不仅仅是
/bot
@ccKep yes,这就是问题的解决办法,非常感谢!!你能解释一下那里发生了什么吗?如果您将其作为答案发布,我可以接受。我不确定有关Symfonys路由的内部内容是否正确,我只是注意到您的HTTP 301从
/bot
重定向到
/bot/
。我怀疑这与您的控制器注释是
/
有关,并且在routing.yml中前缀为
/bot
,因此它变成了
/bot/
。如果我没记错的话,你可以看一下php应用程序/控制台路由器:debug来打印准确的路由表。你在路由中使用了permenant重定向。