我想将所有请求重定向到我的zend Web应用程序到https网址 我在.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]
任何想法?到目前为止,我已经尝试了几件事,但没有一件事能够持续发挥作用。
答案 0 :(得分: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());