2011-04-28 38 views

回答

18
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/相同的URL,但https://。第二個規則集將確保/page1//page2/重定向回http://,如果通過https://訪問它們。

+0

東西丟失。如果您希望匹配是準確的,請不要忘記添加美元符號'$',否則只要在URL中的任何位置找到/ page1 /',規則就會匹配。這可能不是你想要的。我試圖在http中使用的頁面是'/'。沒有'$'就沒有效果。 'RewriteCond%{REQUEST_URI}^\/$' – lano1106 2017-01-19 21:43:57

+0

似乎應該更改爲'RewriteRule(。*)https://%{HTTP_HOST} $ 1 [L,R = 301]',否則它將被重定向到https:// example.org//(雙斜線) – Sutra 2017-09-05 10:30:20

5

一個更簡單的解決方案:

RedirectMatch ^((?!\/(page1|page2)).*)$ https://%{HTTP_HOST}$1 

這一切重定向,除了1和Page 2當前主機的HTTPS。

+0

對我來說這已經足夠了,但這並不妨礙能夠通過https訪問該頁面。通過這一行,您只能使用http和https進行訪問。 – rwx 2016-03-08 23:26:46

+0

據我瞭解,這不是原來的問題,也許你的用例是不同的? – klodoma 2016-03-09 09:26:12

相關問題