Symfony路由器重定向到https应用程序上的http

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Symfony路由器重定向到https应用程序上的http相关的知识,希望对你有一定的参考价值。

我正在将我的应用程序从https://mywebsite.com(1)迁移到https://otherwebsite.com(2)该应用程序托管在不同的服务器上

代码如下(1),生成的url的方案是https。 (2)上的相同代码使用http方案生成url

$filterUrl = $this->router->generate('liip_imagine_filter', $params, UrlGeneratorInterface::ABSOLUTE_URL);

路线定义是

<route id="liip_imagine_filter" path="/media/cache/resolve/{filter}/{path}" methods="GET">
        <default key="_controller">%liip_imagine.controller.filter_action%</default>
        <requirement key="filter">[A-z0-9_-]*</requirement>
        <requirement key="path">.+</requirement>
</route>

经典使用Symfony路由器,你有什么想法为什么(1)我得到https和(2)我得到http

答案

由于您没有将schemeshost属性传递给路线liip_imagine_filter,因此UrlGenerator使用当前请求的属性。

问题是php从Web服务器接收请求信息,有时它不符合您的期望。可能存在某种反向代理,例如nginx,它接受来自Internet的HTTPS请求并通过HTTP将它们转发到另一个Nginx,最后symfony接收HTTP方案。

要查明反向代理后面的(2)服务器是否创建了test.php文件:

<?php

echo $_SERVER['REQUEST_SCHEME'];

它将输出当前请求方案。

要设置Symfony在反向代理下工作,请阅读官方文档:https://symfony.com/doc/current/deployment/proxies.html上的这篇文章

以上是关于Symfony路由器重定向到https应用程序上的http的主要内容,如果未能解决你的问题,请参考以下文章

使用反应路由器重定向

在Symfony 4中将路由重定向到语言前缀

根据登录状态使用路由器重定向用户

反应路由器重定向在私有路由中不起作用

从 Android 上的应用内浏览器重定向到 Chrome 的最佳方式?

反应测试库:测试路由器重定向