gpt4 book ai didi

php - 如何在 symfony 模式重定向上更改 http 代码

转载 作者:行者123 更新时间:2023-12-04 17:43:38 25 4
gpt4 key购买 nike

我正在将一个旧应用程序迁移到 Symfony,出于 SEO 的原因,我需要将其一部分保留在 HTTP 上,一部分保留在 HTTPS 上。

我在 routing.yaml 中使用 schemes 配置键:

route_name:
path: ...
schemes: [HTTP]

我遇到的问题是 Symfony 通过 HTTP 301 Moved Permanently 从 HTTPS 重定向到 HTTP,但我希望它只是暂时重定向,因为我们计划在接下来完全切换到 https年。

有没有办法更改响应代码?或者是否有更好的方法将应用程序的一部分保留在 HTTP 上,而另一部分保留在 HTTPS 上?

最佳答案

我很感兴趣,所以我研究了一下。不幸的是,这似乎比我预期的要困难一些。

永久重定向是硬编码的,参见:

https://github.com/symfony/symfony/blob/master/src/Symfony/Bundle/FrameworkBundle/Routing/RedirectableUrlMatcher.php#L35

没问题,您只需将匹配器替换为您自己的……但是不行。匹配器没有注入(inject)路由器,而是在路由器预热期间创建的。

https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Routing/Router.php#L270

至少 matcher_class 选项似乎是我们正在寻找的。不幸的是,这也是硬编码的:

https://github.com/symfony/symfony/blob/master/src/Symfony/Bundle/FrameworkBundle/Resources/config/routing.xml#L66

看起来您将创建一个自定义匹配器(permanent => false),并使用编译器传递重新定义路由器配置。

异常复杂,即使按照 Symfony 标准也是如此。

关于php - 如何在 symfony 模式重定向上更改 http 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53259918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com