301将HTTPS重定向到单个页面的HTTP

时间:2014-08-22 21:46:25

标签: apache .htaccess redirect ssl https

我目前有一个SSL证书应用于我的网站,所有网址都正确地重定向到https。我需要其中一个URL是HTTP。我的.htaccess中有以下代码,它将所有页面重定向到HTTPS。

我希望以下网址为HTTP而非HTTPS。

http://www.example.com/blog_rss.php

RewriteEngine on
RewriteBase /
RewriteCond %{ENV:HTTPS} !on [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

预先感谢您的协助!

1 个答案:

答案 0 :(得分:2)

您可以在htaccess

中替换当前代码
RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/blog_rss\.php$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L,QSA]

RewriteCond %{HTTPS} on
RewriteRule ^(blog_rss\.php)$ http://%{HTTP_HOST}/$1 [R=301,L,QSA]

编辑:在某些服务器上无法识别%{HTTPS},这导致无限循环。

尝试使用%{SERVER_PORT}(如果默认http端口仍为80且ssl端口为443)

RewriteEngine On
RewriteBase /

RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !^/blog_rss\.php$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L,QSA]

RewriteCond %{SERVER_PORT} 443
RewriteRule ^(blog_rss\.php)$ http://%{HTTP_HOST}/$1 [R=301,L,QSA]

您也可以尝试使用初始语法

RewriteEngine On
RewriteBase /

RewriteCond %{ENV:HTTPS} !on [NC]
RewriteCond %{REQUEST_URI} !^/blog_rss\.php$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L,QSA]

RewriteCond %{ENV:HTTPS} on [NC]
RewriteRule ^(blog_rss\.php)$ http://%{HTTP_HOST}/$1 [R=301,L,QSA]