具有方案路由设置的Symfony2无限重定向循环

Ste*_*che 5 php https symfony

我有以下带路由注释的控制器:

/**
 * @Route("/checkout/", name="checkout", schemes = "https")
 */
public function indexAction(Request $request)
{
    //...do stuff
}
Run Code Online (Sandbox Code Playgroud)

这在我的开发服务器上工作正常,但是,在我的生产服务器上,我获得了无限的重定向路由.我查看了日志,它是由Symfony引起的,而不是Apache.它一遍又一遍地执行此操作直到我的浏览器停止:

[2014-10-28 17:32:28] request.INFO: Matched route "checkout" (parameters: "_controller": "Symfony\Bundle\FrameworkBundle\Controller\RedirectController::urlRedirectAction", "path": "/checkout/", "permanent": "true", "scheme": "https", "httpPort": "80", "httpsPort": "443", "_route": "checkout") [] []
Run Code Online (Sandbox Code Playgroud)

它没有意义,因为页面通过HTTPS请求IS:

https://example.com/checkout/

我在security.yml中没有覆盖它的access_control设置.奇怪的是,所有其他不使用"schemes ="https"的控制器工作.

Ste*_*che 2

事实证明,通过在服务器级别而不是在 VirtualHost 级别设置我的 SSL 配置,Apache 没有设置 PHP 服务器变量“HTTPS”,即使正在使用 HTTPS。这是 Symfony 用来确定请求是否安全的变量。通过将各种 SSL 指令直接添加到我的 VirtualHost 条目中,问题就得到了解决。希望这对某人有帮助。