我正在将一个旧应用程序迁移到Symfony,出于SEO的原因,需要将其部分保留在HTTP上,将部分保留在HTTPS上。
我在schemes
中使用routing.yaml
配置键:
route_name:
path: ...
schemes: [HTTP]
我遇到的问题是Symfony通过HTTP 301 Moved Permanently
从HTTPS重定向到HTTP,但是我希望它只是临时重定向,因为我们计划在明年完全切换到https。
是否可以更改响应代码?还是有更好的方法将应用程序的一部分保留在HTTP上,将一部分保留在HTTPS上?
答案 0 :(得分:1)
我很感兴趣,所以我调查了一下。不幸的是,这似乎比我预期的要困难一些。
永久重定向是硬编码的,请参见:
没问题,您只需要用自己的匹配器替换即可。匹配器未注入路由器,而是在路由器预热期间创建的。
https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Routing/Router.php#L270
至少我们正在寻找matcher_class
选项。不幸的是,这也是硬编码的:
看起来您将创建一个自定义匹配器(永久=> false),并使用编译器遍历重新定义路由器配置。
即使按Symfony标准,也异常复杂。