0

zendWebアプリケーションへのすべてのリクエストをhttpsurlにリダイレクトしたい.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 に答える