首页 > 程序开发 > 强制使用https的apache设置

强制使用https的apache设置

2008年10月11日

如果我们有一个域,比如login.abc.com, 这个域我们同时接受http和https协议,但是我们希望将http协议的用户重定向到https,可以有两种做法,一种是在代码中进行重定向,zf的代码如下:

class Common_Helper_ForceHTTPS extends Zend_Controller_Action_Helper_Abstract {
  public function direct() {
    if (! isset ( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS']) {
      $request = $this->getRequest ();
      $url = 'https://' . $_SERVER ['HTTP_HOST'] . $request->getRequestUri ();
      $redirector = Zend_Controller_Action_HelperBroker::getStaticHelper ( 'redirector' );
      $redirector->gotoUrl ( $url );
    }
  }
}

还有一种是进行apache配置,由于apache的配置是c代码,效率较高,我们建议用apache的配置来实现。
<IfModule mod_rewrite.c>
    RewriteEngine on
    Options +FollowSymLinks
    RewriteBase /   
RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d   
    RewriteRule ^(.*)$ index./$1
   
    RewriteCond $1 !^(index.php|img|css|js|secure_checkout|common_funcs.js|robots.txt)
    RewriteCond %{SERVER_PORT} 80
    RewriteRule /secure_checkout(.*)$ https://www.myURL.com/secure_checkout/$1
</IfModule>
RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d   
    RewriteRule ^(.*)$ index.php/$1
   
    RewriteCond $1 !^(index.php|img|css|js|secure_checkout|common_funcs.js|robots.txt)
    RewriteCond %{SERVER_PORT} 80
    RewriteRule /secure_checkout(.*)$ https://www.myURL.com/secure_checkout/$1
</IfModule>

VN:F [1.9.22_1171]
Rating: 9.5/10 (2 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)
强制使用https的apache设置, 9.5 out of 10 based on 2 ratings

程序开发 , ,

本文的评论功能被关闭了.