【发布时间】:2017-10-09 11:37:54
【问题描述】:
是否可以强制 Bundle 使用区域设置前缀和 301 状态代码而不是 302 进行重定向?这对 SEO 来说会很棒。
【问题讨论】:
标签: symfony redirect routing http-status-code-301
是否可以强制 Bundle 使用区域设置前缀和 301 状态代码而不是 302 进行重定向?这对 SEO 来说会很棒。
【问题讨论】:
标签: symfony redirect routing http-status-code-301
代码的快速峰值:是的。永久重定向发生在 I18nRouter 内部(以及在那里调用的重定向控制器)
https://github.com/schmittjoh/JMSI18nRoutingBundle/blob/master/Router/I18nRouter.php#L258
您可以覆盖 I18nRouter(match() 方法应该是相关位)并将$permanent 更改为false
有关 Symfony 中覆盖的更多信息,请查看https://symfony.com/doc/current/bundles/override.html
【讨论】:
public function getParent() { return 'JMSI18nRoutingBundle'; } 然后我创建了一个控制器,它从 Bundle 中扩展了 RedirectController 并插入了 redirectAction() 来覆盖它。在那里我更改了$permanent 并使用 ne 变量调用return parent::redirectAction(),但没有任何反应。我还插入了一个die() 来测试它,但该站点一如既往地运行。
您可以在响应侦听器中简单地更改响应状态代码。
【讨论】:
if ($event->getRequest()->getPathInfo() === '/') { $event->getResponse()->setStatusCode(301); }