致电:
$this->get('router')->generate('...',array(),true)
要从控制器获取绝对URL,我会得到一个默认端口80的URL: https://subdomain.mydomain.com:80
我怎样才能摆脱:80?这只发生在生产中。在我的本地计算机上,我没有在绝对URL中获得默认端口。
生产环境使用反向代理(nginx:443-> varnish-> apache:80) 本地apache服务器端口为80,但应该是远程端口443。
答案 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作业中。