Symfony JMSI18nRoutingBundle重定向到301

问题描述:

是否可以强制Bundle重定向到区域设置前缀和301状态码而不是302?这将是伟大的搜索引擎优化。Symfony JMSI18nRoutingBundle重定向到301

代码快速峰值:是的。永久重定向发生在I18nRouter(这被称为有重定向控制器)

https://github.com/schmittjoh/JMSI18nRoutingBundle/blob/master/Router/I18nRouter.php#L258

您可以覆盖I18nRouter内侧(match()方法应该是相关的位),改变$permanentfalse

有关在Symfony中覆盖的更多信息,请检查https://symfony.com/doc/current/bundles/override.html

+0

感谢您的快速回复。我可以做到这一点,但我必须复制这个非常长的方法的代码,并且不保存更新(因为它是I18Router.php中的私有方法)。有没有其他简单而又节省的方法来做到这一点? – Mojo

+0

@Mojo覆盖控制器中的redirectAction并对其进行扩展(例如,像您重写FOSUserBundle中的控制器),但在执行父:: redirectAction() – Koalabaerchen

+0

之前更改$ permanent。这是个好主意。但我无法让覆盖工作。我创建了一个实现以下功能的新Bundle: 'public function getParent(){return'JMSI18nRoutingBundle'; }' 然后我创建了一个控制器,它扩展了Bundle中的RedirectController并插入'redirectAction()'来覆盖它。在那里,我改变了'$ permanent',并用ne变量调用'return parent :: redirectAction()',但没有任何反应。我也插入了一个'die()'来测试它,但是网站一直在运行。 – Mojo