3

调用时:

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

要从控制器获取绝对 URL,我会使用默认端口 80 获取 URL: https ://subdomain.mydomain.com:80

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

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

4

3 回答 3

1

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

于 2013-11-21T00:11:09.627 回答
1

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

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

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

于 2017-10-09T17:59:32.043 回答
0

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

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

$this->context->getHttpPort() / ->getHttpsPort() 
于 2013-08-18T13:42:06.907 回答