我有一个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]
答案 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]