如何在 symfony 模式重定向上更改 http 代码
How to change http code on symfony schema redirect
我正在将旧应用程序迁移到 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/Component/Routing/Router.php#L270
至少 matcher_class
选项似乎是我们正在寻找的。不幸的是,这也是硬编码的:
看起来您将创建一个自定义匹配器(使用 permanent => false),并使用编译器传递重新定义路由器配置。
异常复杂,即使按照 Symfony 标准也是如此。
我正在将旧应用程序迁移到 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/Component/Routing/Router.php#L270
至少 matcher_class
选项似乎是我们正在寻找的。不幸的是,这也是硬编码的:
看起来您将创建一个自定义匹配器(使用 permanent => false),并使用编译器传递重新定义路由器配置。
异常复杂,即使按照 Symfony 标准也是如此。