调用时:
$this->get('router')->generate('...',array(),true)
要从控制器获取绝对 URL,我会使用默认端口 80 获取 URL: https ://subdomain.mydomain.com:80
我怎样才能摆脱:80?这只发生在生产中。在我的本地机器上,我没有在绝对 URL 中获得默认端口。
生产环境使用反向代理(nginx:443->varnish->apache:80)本地apache服务器端口是80,但应该是远程端口443。
调用时:
$this->get('router')->generate('...',array(),true)
要从控制器获取绝对 URL,我会使用默认端口 80 获取 URL: https ://subdomain.mydomain.com:80
我怎样才能摆脱:80?这只发生在生产中。在我的本地机器上,我没有在绝对 URL 中获得默认端口。
生产环境使用反向代理(nginx:443->varnish->apache:80)本地apache服务器端口是80,但应该是远程端口443。
顺便说一句,这已在 Symfony 2.3.5 中修复 https://github.com/symfony/symfony/commit/65814bae27d6fdb9501a4efd07e6b980353d89bb
您还可以通过在 parameters.yml 文件中定义路由器上下文来解决此问题,如下所示:
router.request_context.host: localhost:8181
router.request_context.scheme: http
router.request_context.base_url: /application/path
这将让您在没有 Web 上下文时生成正确的 URL,例如在命令或 cron 作业中。
您应该检查:https ://github.com/symfony/symfony/blob/master/src/Symfony/Component/Routing/Generator/UrlGenerator.php#line-244 ,这可能是您的问题的原因。
也可能是缓存问题,尝试使用以下方法进行调试:
$this->context->getHttpPort() / ->getHttpsPort()