php - 强制 https 时在 symfony2 中重定向循环

标签 php symfony https redirect-loop

在我的 Symfony2 应用程序中,我设置了防火墙,以便 /admin 下的所有内容路由需要通过 https 运行,但是在部署时我得到一个重定向循环。我已经阅读了 Symfony2 网站上关于防火墙的文档,并设置了一个登录表单。我还阅读了一些 Stack Overflow 文章并尝试了他们的解决方案,但到目前为止还没有。

下面是我的配置,有什么我遗漏的吗?

(据我所知,服务器正在运行 Apache,我无法从托管服务提供商直接访问服务器配置)

access_control:
    # require ROLE_ADMIN for /admin*
    - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
    - { path: ^/login_check, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
    - { path: ^/admin*, roles: ROLE_ADMIN, requires_channel: https}

最佳答案

更新:修复了问题。事实证明,托管服务提供商没有设置一些服务器变量。

为了将来引用,请在 app.php 下添加以下内容在 web 或 public_html 目录中。可能是一个肮脏的黑客,但它为我解决了这个问题。

if($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
{ 
  $_SERVER['HTTPS'] = 'on';
  $_SERVER['SERVER_PORT'] = 443;
}

关于php - 强制 https 时在 symfony2 中重定向循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34118854/

相关文章:

apache - 允许对 http 和 https 的跨源请求

php - 我无法在 View 文件中检索 Controller 发送的值

php - sql - 仅更新表单中更改的值到多个表

php - 在两个具有不相同表的mysql表中搜索(关键字搜索)

php - Symfony2.3 在 Controller 中获取 EntityManager 的更好方法

php - Doctrine 和 Symfony2 : WHERE a. title LIKE $array

http - 如何跨 HTTP 和 HTTPS 请求重用 SessionScope 的 JSF Beans?

php - 将 Laravel 4 集成到现有的平面 PHP 站点中

php - Symfony 2 EntityAudit 根本不生成历史/版本表

python - 由 gunicorn 运行的 Flask 应用程序在一段时间后被挂起