0

我想将所有请求重定向到我的 zend Web 应用程序到 https url 我在 .htaccess 文件中尝试过这个并且得到一个无限重定向

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

有任何想法吗?我已经尝试了几件事,但到目前为止没有一个能始终如一地工作。

4

1 回答 1

3

如果我复制您的规则,我似乎不会以无限重定向结束,它工作正常。

这是我用来强制 https 的 ZF 插件,而不是使用.htaccess. 你可以试试这个,看看它是否有效:

<?php

class Application_Plugin_SslCheck extends Zend_Controller_Plugin_Abstract
{
    public function routeShutdown(Zend_Controller_Request_Abstract $request)
    {
        $sslModules = array('admin', 'default'); // modules that require ssl
        $module     = $request->getModuleName();

        if (in_array($module, $sslModules)) { // require SSL
            if (APPLICATION_ENV == 'production') { // only require ssl in production mode
                if (!isset($_SERVER['HTTPS']) || !$_SERVER['HTTPS']) { // if request is not secure, redirect to secure url
                    $request    = $this->getRequest();

                    $url        = 'https://'
                                . $_SERVER['HTTP_HOST']
                                . $request->getRequestUri();

                    $redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
                    $redirector->gotoUrl($url);
                }
            }
        }
    }
}

要运行它,只需在引导程序中将其注册到前端控制器:

Zend_Controller_Front::getInstance()->registerPlugin(new Application_Plugin_SslCheck());
于 2012-06-22T18:41:09.490 回答