Symfony 2使用代理返回错误的url

时间:2014-07-16 09:37:53

标签: php symfony proxy twig silex

我正在使用Silex项目,并在使用代理调用网站时遇到错误网址的问题。

没有代理的Sitename:http://sitename.com/someFile.php

使用代理进行Sitename:https://sslsites.com/sitename.com/someFile.php

$_SERVER['HTTP_X_FORWARDED_HOST']: 'sslsites.com'

我在index.php

中设置了受信任的代理
Request::setTrustedProxies(array('sslsites.com'));

composer.json

"silex/silex": "1.0.*@dev",
"twig/twig": "~1.12",
"symfony/twig-bridge": "~2.2",
"symfony/validator": "~2.2",
"symfony/form": "~2.2",
"symfony/config": "~2.2",
"symfony/translation": "~2.2",
"symfony/locale": "~2.2",
"symfony/yaml": "~2.2",
"symfony/filesystem": "~2.2",
"symfony/finder": "~2.2",
"swiftmailer/swiftmailer": "~4.3",
"doctrine/dbal": "~2.3"

运行" url('类别')"在树枝模板中,我期待:

https://sslsites.com/sitename.com/category

但我明白了

https://sslsites.com/category

我不想要快速而肮脏的解决方案。谁能给我一个提示?

1 个答案:

答案 0 :(得分:0)

当使用组件作为框架的一部分时,您可以使用router.request_context.base_url参数,例如..

parameters:
    router.request_context.base_url: my/path

这会让我相信你可以使用..

if ($baseUrl = $app['request']->server->get('HTTP_X_FORWARDED_HOST')) {
    $app['request_context']->setBaseUrl($baseUrl);
}

我认为最好的地方就是当你创建应用程序但我可能错了,因为我只是粗略地看了一眼Silex。