Php Symfony路由:为什么Symfony重定向我的POST请求?
我的Symfony应用程序出现了一种奇怪的行为。我使用一个控制器作为facebook的webhook,在那里我希望有一个post请求 Web服务器的My access.log向我显示以下内容: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 "-" "-"
[/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重定向。