Php 在Zend框架中强制HTTP到HTTPS重定向

Php 在Zend框架中强制HTTP到HTTPS重定向,php,zend-framework,ssl,https,Php,Zend Framework,Ssl,Https,您好,目前我从Godaddy购买了SSL证书,并安装在LoadBalancer上。我有一个zend framework应用程序,但是我在站点重定向到Https时遇到了问题。以下是我的引导代码,我找到了将我的站点重定向到https的最简单方法: protected function _initForceSSL() { if($_SERVER['SERVER_PORT'] != '443') { header('Location: https://' . $_SERVER['

您好,目前我从Godaddy购买了SSL证书,并安装在LoadBalancer上。我有一个zend framework应用程序,但是我在站点重定向到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]

由于您使用的是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]

让我知道它是否有效

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

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

以下代码适用于我

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

这些类型的重定向必须在.htaccess中完成,而不是在您的应用程序代码中完成。这里有许多答案-我在.htaccess上尝试了一些,但仍然没有效果,我更新了上面的问题,将.htaccess包含在内。@emaillen有关index.php在公用文件夹中的情况?我正在使用Zend Framework
$this->getRequest()->IsSecurity()
应用于检查安全传输。返回此错误“此网页有重定向循环”原因可能是什么?@zlippr您能在问题中发布您的整个htaccess文件吗?以上是我的整个htaccess文件内容,此外,公用文件夹中还有具有相同内容的htaccess。@zlipp请删除公用文件夹中的htaccess文件。应用程序的根目录下应该只有一个htaccess,直到无法解析为止。我从公用文件夹中删除htaccess并在我的根htaccess中替换上述代码,但我有一条消息“此网页有一个重定向循环”