Mcs*_*sky 5 routing http symfony
我正在将我的应用程序从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);
Run Code Online (Sandbox Code Playgroud)
路由定义是
<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>
Run Code Online (Sandbox Code Playgroud)
Symfony 路由器的经典用法,您知道为什么在 ( 1 ) 上https和在 ( 2 ) 上http吗?
由于您没有将schemes和host属性传递给 Route liip_imagine_filter,因此 UrlGenerator 使用当前请求的属性。
问题是 PHP 从 Web 服务器接收请求信息,有时它得到的不是您所期望的。可能有某种反向代理,例如 Nginx,它接受来自互联网的 HTTPS 请求,并通过 HTTP 将它们转发到另一个 Nginx,最终 symfony 接收 HTTP 方案。
要查明反向代理后面的 (2) 服务器是否test.php使用以下命令创建文件:
<?php
echo $_SERVER['REQUEST_SCHEME'];
Run Code Online (Sandbox Code Playgroud)
它将输出当前的请求方案。
要设置 Symfony 在反向代理下工作,请阅读官方文档中的这篇文章: https: //symfony.com/doc/current/deployment/proxies.html