Symfony2路由器返回端口80的绝对URL

时间:2013-08-17 23:07:16

标签: php symfony

致电:

$this->get('router')->generate('...',array(),true) 

要从控制器获取绝对URL,我会得到一个默认端口80的URL: https://subdomain.mydomain.com:80

我怎样才能摆脱:80?这只发生在生产中。在我的本地计算机上,我没有在绝对URL中获得默认端口。

生产环境使用反向代理(nginx:443-> varnish-> apache:80) 本地apache服务器端口为80,但应该是远程端口443。

3 个答案:

答案 0 :(得分:1)

顺便说一下,这已在Symfony 2.3.5中得到修复 https://github.com/symfony/symfony/commit/65814bae27d6fdb9501a4efd07e6b980353d89bb

答案 1 :(得分:0)

您应该检查:https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Routing/Generator/UrlGenerator.php#line-244,这可能是您遇到问题的原因。

这也可能是一个缓存问题,请尝试使用以下方法进行调试:

$this->context->getHttpPort() / ->getHttpsPort() 

答案 2 :(得分:0)

您也可以通过在parameters.yml文件中定义路由器上下文来解决此问题,如下所示:

router.request_context.host: localhost:8181
router.request_context.scheme: http
router.request_context.base_url: /application/path

这可以让您在没有Web上下文时生成正确的URL,例如在命令或cron作业中。