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

时间:2017-12-28 13:52:20

标签: symfony http routing

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

下面的代码工作得很好( 1 ),生成的网址的方案是https。 ( 2 )上的相同代码会生成一个包含http scheme

的网址
$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 )我得到了{{ 1}}?

1 个答案:

答案 0 :(得分:2)

由于您未将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