我大吃一驚!我一直在嘗試幾個小時,通過.htaccess將兩個特定頁面重定向到HTTPS,並強制所有其他頁面始終使用HTTP。其中一個網址是動態的,這就是我的問題所在。沒有我找到的例子爲我工作。以下是我目前的代碼。我終於開始部分工作,所以它只是關閉SSL我需要幫助。唯一應該使用SSL的頁面是login.php
和register.php?country=xx
,其中xx不同,並且始終爲小寫字母。動態URL的SSL重定向
Options +FollowSymLinks
RewriteEngine on
# Turn on ssl for specific pages
RewriteCond %{HTTPS} off
RewriteRule ^login\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} off
RewriteCond %{QUERY_STRING} ^country=([a-z]+)$
RewriteRule ^register.php https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# Turn off ssl when not accessing specific pages
RewriteCond %{HTTPS} on
RewriteCond %{SCRIPT_FILENAME} !\/register.php\?country=([a-z]+)$ [NC]
RewriteCond %{SCRIPT_FILENAME} !\/login.php$ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# Redirect non-canonical hostname requests, preserving http/https
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{SERVER_PORT}>s ^(443>(s)|[0-9]+>s)$
RewriteRule ^(.*)$ http%2://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
感謝您的回覆。我的註冊頁面被設置爲首先用戶必須選擇他們的國家,而所有其他內容被隱藏,並且在他們做出選擇之後,顯示註冊表單。所以我試圖只確保表格的安全......我放棄了,我會保證整個頁面的安全。我試過你的代碼,但是有些東西不太對。關閉部分工作,但當我嘗試去登錄或註冊頁面,我得到「Internet Explorer無法顯示網頁」(通常,我使用Firefox,但我正在測試這與IE瀏覽器,因爲FF的愚蠢的新的持久性緩存問題)。 – Jen
Ff告訴我:「Firefox已經檢測到服務器正在以一種永遠不會完成的方式重定向該地址的請求。」 – Jen
另外:我不知道它是否有所作爲,但我正在測試我的主目錄的子文件夾,其中包含我整個站點的副本,以避免在測試時在活動網站上導致錯誤。 – Jen