禁用一页的SSL

时间:2014-09-19 15:56:53

标签: .htaccess ssl drupal

我有一个Drupal站点,每个页面都使用SSL。我将htaccess文件配置为强制SSL。

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]
RewriteCond %{ENV:HTTPS} !on [NC]
RewriteRule ^(.*)$ https://domain.org/$1 [R,L]

我现在想要只为一个页面禁用SSL。博客rss feed,因为feedburner不会解析https页面。链接是http://domain.org/blog/rss.xml。我尝试过多种东西,唯一一种甚至是下面的东西。但是它只是创建了一个重定向循环。

RewriteCond %{ENV:HTTPS} on [NC]
RewriteRule ^blog/rss.xml(.*)$ http://domain.org/blog/rss.xml [R,L]

以下是基于之前答案的尝试更新。它仍然无法正常工作。一切似乎都很正常,除非我尝试访问博客/ rss.xml地址(https或http),它只是重定向到主页的https版本。

  RewriteEngine on
  RewriteBase /

  RewriteRule ^ - [E=protossl]
  RewriteCond %{HTTPS} on
  RewriteRule ^ - [E=protossl:s]

  RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

  RewriteRule "(^|/)\." - [F]

  RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
  RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]

  RewriteCond %{ENV:HTTPS} !on [NC]
  RewriteRule !^blog/rss\.xml https://%{HTTP_HOST}%{REQUEST_URI} [R=302,NC,NE,L]

  RewriteCond %{ENV:HTTPS} on [NC]
  RewriteRule ^(blog/rss.xml)$ http://%{HTTP_HOST}/$1 [R,L]

 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_URI} !=/favicon.ico
 RewriteRule ^ index.php [L]

1 个答案:

答案 0 :(得分:1)

保持这样的规则:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301,NE]

RewriteCond %{ENV:HTTPS} !on [NC]
RewriteRule !^blog/rss\.xml https://%{HTTP_HOST}%{REQUEST_URI} [R=302,NC,NE,L]

RewriteCond %{ENV:HTTPS} on [NC]
RewriteRule ^(blog/rss.xml)$ http://%{HTTP_HOST}/$1 [R,L]