htaccess仅针对指定路由进行https关闭

时间:2015-03-30 09:33:57

标签: .htaccess mod-rewrite

我想在我的域上强制https://www.domain.com,不包括某些路线。

301重定向

  1. domain.com => https://www.domain.com(不工作)
  2. www.domain.com => https://www.domain.com(不工作)
  3. http://www.domain.com => https://www.domain.com(不工作)
  4. 不包括

    1. http://www.domain.com/init => http://www.domain.com/init
    2. http://www.domain.com/posts => http://www.comain.com/posts
    3. ...
    4. 到目前为止我做了什么:

      DirectoryIndex index.php
      RewriteEngine on
      RewriteBase /
      
      RewriteCond %{HTTPS} off
      RewriteCond %{REQUEST_URI} ^(init|posts) [NC]
      RewriteRule ^(.*)$ https://www.domain.com/$1 [R=301,L]
      
      RewriteCond $1 !^(index\.php|robots\.txt|website|favicon\.ico|style\.css|sitemap.xml)
      RewriteRule ^(.*)$ ./index.php?/$1 [L]
      

1 个答案:

答案 0 :(得分:0)

有趣的是,我正在寻找一个解决方案,并且发现我的排除路线首先得到解决http://www.domain.com/index.php/init并且不符合我的条件,因此将相同的规则添加到 QUERY_STRING < / strong>现在按预期工作:

DirectoryIndex index.php
RewriteEngine on
RewriteBase /

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !(init|posts) [NC]
RewriteCond %{QUERY_STRING} !(init|posts) [NC]
RewriteRule ^(.*)$ https://www.domain.com/$1 [R=301,L]

RewriteCond $1 !^(index\.php|robots\.txt|website|favicon\.ico|style\.css|sitemap.xml)
RewriteRule ^(.*)$ ./index.php?/$1 [L]