【问题标题】:Force HTTP to HTTPS Redirect in Zend FrameworkZend 框架中的强制 HTTP 到 HTTPS 重定向
【发布时间】:2013-02-16 19:06:43
【问题描述】:

您好,目前我从 Godaddy 购买了 SSL 证书并安装在 LoadBalancer 上。我有一个 zend 框架应用程序,但我遇到了将站点重定向到 Https 的问题。以下是我发现将我的网站重定向到 https 的最简单方法的引导代码:

 protected function _initForceSSL() {
     if($_SERVER['SERVER_PORT'] != '443') {
      header('Location: https://' . $_SERVER['HTTP_HOST'] . 
                $_SERVER['REQUEST_URI']);
      exit();
    }

不幸的是,服务器错误返回。我在这里想念什么?谢谢

更新:

.htaccess 在文件的根目录

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ public/index.php [NC,L]

【问题讨论】:

  • 这些类型的重定向必须在 .htaccess 中完成,而不是在您的应用程序代码中
  • 这里有很多答案 - serverfault.com/a/116209/79206
  • 我在 .htaccess 上尝试了一些,但仍然没有效果,我更新了上面的问题以包含我的 .htaccess。
  • @emaillenin 对于我的 index.php 在公用文件夹中的情况?我正在使用 Zend 框架
  • $this->getRequest()->isSecure() 应该用于检查安全传输。

标签: php zend-framework ssl https


【解决方案1】:

以下代码对我有用。

 RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteRule .* index.php

【讨论】:

    【解决方案2】:

    只需将此函数添加到您的引导文件中:

    protected function _initForceSSL() {
        if($_SERVER['SERVER_PORT'] != '443') {
            header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
            exit();
        }
    }
    

    【讨论】:

      【解决方案3】:

      由于您使用的是 Zend Framework,您可以尝试在 .htaccess 文件中使用以下代码:

      RewriteEngine On 
      RewriteCond %{SERVER_PORT} 80 
      RewriteRule ^(.*)$ https://www.yoursite.com/$1 [R=301,L]
      
      RewriteCond %{REQUEST_FILENAME} -s [OR]
      RewriteCond %{REQUEST_FILENAME} -l [OR]
      RewriteCond %{REQUEST_FILENAME} -d
      RewriteRule ^.*$ - [NC,L]
      RewriteRule ^.*$ public/index.php [NC,L]
      

      让我知道它是否有效!

      【讨论】:

      • 返回此错误“此网页有重定向循环”可能是什么原因..?
      • @zlippr 你可以在问题中发布你的整个 htaccess 文件吗?
      • 以上是我的全部htaccess文件内容,在public文件夹中也有htaccess,内容相同。
      • @zlippr 删除公用文件夹中的 htacess 文件。 应用程序的根目录应该只有一个htaccess
      • 仍未解决。我从公用文件夹中删除 htaccess 并在我的根 htaccess 中替换上述代码,但我收到此消息“此网页有重定向循环”
      猜你喜欢
      • 2016-11-14
      • 2020-05-28
      • 1970-01-01
      • 2017-10-01
      • 2020-07-23
      • 2011-11-03
      • 2014-10-15
      • 1970-01-01
      • 2018-03-14
      相关资源
      最近更新 更多