.htaccess中不需要的循环

时间:2014-01-28 15:51:38

标签: apache mod-rewrite http-redirect

我想使用mod_rewrite将http中的所有网址重定向到https,但只有一个目录。

换句话说:

  1. 对http内容的任何请求都将重定向到https
  2. 中的内容
  3. 博客目录中的任何内容请求(以/ blog /开头的URI)都将重定向到其http等效内容。
  4. 我已经实现了以下.htaccess:

    RewriteEngine On
    
    RewriteCond %{HTTPS} on
    RewriteCond %{REQUEST_URI} ^/blog/
    RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    
    RewriteCond %{HTTPS} off
    RewriteCond %{REQUEST_URI} !^/blog
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    

    每当我调用带有从/ blog /开始的请求URI的页面时,我都会得到一个重定向循环。我真的不明白为什么。我做错了什么?

1 个答案:

答案 0 :(得分:0)

试试这个。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !blog [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]