强制整个站点使用HTTPS时强制1个URL使用HTTP

时间:2017-11-09 02:04:59

标签: apache .htaccess http mod-rewrite https

背景

我有一个被迫使用https的网站,

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

我有一个必须http才能运行的网址。它看起来像这样,

www.example.com/mypage.html

example.com/mypage.html

问题

考虑到存在强制整个网站https的规则,如何强制使用任何格式www或不使用www的网址强制使用http

1 个答案:

答案 0 :(得分:1)

要实现这一点,您需要包含重写条件(RewriteCond)。所以你可以使用:

RewriteCond %{REQUEST_URI} !^/mypage

这基本上是说如果网址包含/mypage,则重定向到HTTP并保持为HTTP。如果网址不包含/mypage,则会将所有内容重定向到HTTP。

RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !^/mypage
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

如果RewriteCond %{SERVER_PORT} 80适用于您,请继续使用它,但您可以将其替换为RewriteCond %{HTTPS} !=on

确保在>测试之前清除缓存