簡體   English   中英

Apache mod_rewrite-重定向到HTTPS,但一個友好的URL(控制器)除外

[英]Apache mod_rewrite - Redirect to HTTPS except one friendly URL (Controller)

我有一個網站需要強制HTTPS,除非特定的URL以模式開頭。

問題是我重定向到index.php以在系統中加載PHP控制器。 當重定向到index.php時,重寫規則將再次應用,但是在重定向之后,%{REQUEST_URI}將變為index.php,並且可以使用http的URL重定向到https。

有辦法解決嗎? 內部重定向后或保持REQUEST_URI不變后,可能不再閱讀規則。

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/ok_with_http
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php [QSA,L]

即使內部重定向到index.php也可以使用%{THE_REQUEST}代替%{REQUEST_URI}來測試原始請求。

根據手冊:

THE_REQUEST

瀏覽器發送到服務器的完整HTTP請求行(例如GET /index.html HTTP/1.1 )。 這不包括瀏覽器發送的任何其他標頭。 與以下大多數其他變量不同,該值尚未被轉義(解碼)。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{THE_REQUEST} !^[A-Z]+\ /ok_with_http(/\S*)?\s
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php [QSA,L]

請參閱我用作參考的答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM