我有以下带路由注释的控制器:
/**
* @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"的控制器工作.
事实证明,通过在服务器级别而不是在 VirtualHost 级别设置我的 SSL 配置,Apache 没有设置 PHP 服务器变量“HTTPS”,即使正在使用 HTTPS。这是 Symfony 用来确定请求是否安全的变量。通过将各种 SSL 指令直接添加到我的 VirtualHost 条目中,问题就得到了解决。希望这对某人有帮助。
| 归档时间: |
|
| 查看次数: |
1519 次 |
| 最近记录: |