Symfony-限制查询参数

Symfony-限制查询参数,symfony,routes,Symfony,Routes,如果有一些额外的参数,有没有办法强制Symfony抛出404 例如,我有route/news/并且我只想允许date参数。所以链接可以以这种形式存在:/news/?date=243242,但如果用户输入以下链接,我需要404:/news/?param=2 谢谢 (我不想在控制器中检查查询参数,我知道我可以)您真的需要这些参数才能获取参数吗?你满足了你的购买目标,把它们作为URL本身的值 @Route("/news/date/{date}") 我知道有点不同-但是你可以强制执行它你为什么还要关心

如果有一些额外的参数,有没有办法强制Symfony抛出404

例如,我有route/news/并且我只想允许date参数。所以链接可以以这种形式存在:/news/?date=243242,但如果用户输入以下链接,我需要404:/news/?param=2

谢谢


(我不想在控制器中检查查询参数,我知道我可以)

您真的需要这些参数才能获取参数吗?你满足了你的购买目标,把它们作为URL本身的值

@Route("/news/date/{date}")

我知道有点不同-但是你可以强制执行它

你为什么还要关心额外的参数?如果某个讨厌的用户决定直接使用URL,那么你的应用程序就不应该正常运行

不要为所有这些检查而烦恼——除非这些参数以某种方式影响安全性


根据您的评论,您希望以404回复,以消除谷歌中的重复内容。要解决这个问题,您需要采取几个步骤


如果用户手动输入一个额外的参数,这绝不会将页面添加到Google索引中。因此,如果你在谷歌索引中有基于不同参数的重复页面,这意味着你的站点上有与这些额外参数的链接。这就是他们最终被编入索引的原因

你能做的第一件事就是去掉那些链接。然后,您可以转到谷歌网站管理员工具,手动从索引中删除带有这些额外参数的索引页面。如果你不再有有问题的链接,它们将无法再次访问索引


如果出于某种原因,您无法删除这些链接,请转到网站管理员工具,并咨询URL参数部分,了解如何添加谷歌应忽略的参数。

问题是我有一些新闻列表过滤器,如类别、日期等。因此,可能存在类别获取参数,也可能不存在类别获取参数。所有过滤器都处于GET状态。否则,我将不得不为所有参数组合定义路由,如果它们是过滤器-然后使用get参数-然后您可以在代码中添加验证。如果参数无效,你仍然可以运行404。我知道我可以,但就像我说的,我希望路由器来处理。我知道这是因为重复的内容(谷歌):)这就是为什么。所以,如果你在谷歌索引中有基于不同参数的重复页面,这意味着你的网站上有与这些额外参数的链接。这就是他们最终被编入索引的原因——坏用户可以使用他们的网站,通过这些额外的参数链接到我的网站。