2012-06-22 3 views
0

내가 htaccess로 파일이 시도 된 HTTPS URL 내 젠드 웹 애플리케이션에 대한 모든 요청을 리디렉션 할 및 무한 리디렉션젠드 HTTPS는 모든 요청

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

보인다 (우리의 스테이징 환경은 phpfog로되어 있습니다.) 그래서 ssl은로드 밸런서에서 끝나고 이것은 무한 리다이렉트를 일으 킵니다. 리디렉션이 계속되지 않도록 HTTP_X_FORWARDED_PORT 정보를 확인하는 방법이 있습니까? – Austin

답변

3

규칙을 복사하면 무한 리디렉션으로 끝나는 것 같지 않습니다. 정상적으로 작동합니다.

여기는 .htaccess 대신 https를 강제로 사용하는 ZF 플러그인입니다.

<?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());