あなたのルールをコピーすると、無限リダイレクトで終わらないようです。問題なく動作します。
これは、使用するのではなく、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());