我需要强制将Apache中的所有页面重定向到HTTPS,除了几页。如何在Apache中为这种情况编写重写规则?
答案 0 :(得分:21)
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} !^\/page1\/
RewriteCond %{REQUEST_URI} !^\/page2\/
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R=301]
RewriteCond %{HTTPS} =on
RewriteCond %{REQUEST_URI} \/page1\/ [OR]
RewriteCond %{REQUEST_URI} \/page2\/
RewriteRule (.*) http://%{HTTP_HOST}/$1 [L,R=301]
第一个规则集会将未通过HTTPS访问的所有网页重定向到/page1/
或/page2/
到同一网址,但https://
。如果/page1/
和/page2/
通过http://
访问,则第二个规则集将确保将https://
和{{1}}重定向回{{1}}。
答案 1 :(得分:7)
更简单的解决方案:
RedirectMatch ^((?!\/(page1|page2)).*)$ https://%{HTTP_HOST}$1
这会将除page1和page2之外的所有内容重定向到当前主机的https。