代码之家  ›  专栏  ›  技术社区  ›  michalhosna

如何更改symfony架构重定向上的http代码

  •  2
  • michalhosna  · 技术社区  · 6 年前

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

    我正在使用 schemes routing.yaml

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

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

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Padam87    6 年前

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

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

    没问题,你只要用你自己的来替换匹配器就行了。。。但不是。匹配器不是注入路由器,而是在路由器预热期间创建的。

    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

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

    异常复杂,即使按照Symfony的标准。