2015-08-24 106 views
0

我有這樣的代碼:通過htaccess的重定向整個網站的https除了特定網頁

RewriteCond %{HTTPS} =on 
RewriteCond %{REQUEST_URI} !\.(jpe?g|gif|bmp|png|ico|js|css)$ [NC] 
RewriteRule !^billing(/.*)?$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NC,NE] 

目前這重定向計費/區域外的任何內容到http等價的,如果他們試圖與https進行訪問。

但是我想知道如何才能將附加頁面添加到允許通過https加載的頁面的「白名單」?

所討論的兩個是:

但是他們都可能有查詢參數就結束。

有人可以解釋如何添加上述允許從https訪問,所以我會知道下次我想添加的東西?

回答

1

您不需要擔心查詢字符串,那些在請求URI外部匹配的查詢字符串。您可以添加附加條件:

RewriteCond %{HTTPS} =on 
RewriteCond %{REQUEST_URI} !\.(jpe?g|gif|bmp|png|ico|js|css)$ [NC] 

RewriteCond %{REQUEST_URI} !^/billing 
RewriteCond %{REQUEST_URI} !^/remote/get_breaks\.php 
RewriteCond %{REQUEST_URI} !^/thumbnail\.php 

RewriteRule^http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NC,NE] 

使它更容易閱讀。

+0

謝謝。所以我不需要'(/.*)?$'在帳單行末尾?這仍然符合'計費'有和沒有斜槓?另外,我忘了補充說,'billing'目錄中的任何內容必須允許通過'https'訪問,而不僅僅是'billing /'本身。目前這是有效的,所以只是想確保這個新代碼仍然允許。 – Brett

+0

@Brett你不需要'(/.*)?$',這幾乎是一回事。唯一的區別是,在'/ billing'之後的任何內容的開頭都需要一個'/',如果你有像'/ billing-foo.php'這樣的文件,你可能需要''''。 '^/billing'說「**以**'/ billing'開頭的任何東西」 –

+0

好的謝謝。 'billing'是一個目錄,所以不需要考慮'billing-foo.php'這樣的東西。 :) – Brett

相關問題