簡體   English   中英

將HTTP重定向到HTTPS而不重定向301

[英]Redirecting HTTP to HTTPS without Redirect 301

我需要在我的網站上默認使用https,因此我使用此.htaccess代碼將所有http流量重定向到https

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

一切都很好,除了網站接收到許多POST請求到達舊的http://地址,並且使用301時POST數據丟失。 我不能阻止POST請求來到舊的http://地址,因為它們來自基於PHP的腳本(安裝在客戶端的服務器上),因此我唯一可能的選項似乎是307或308重定向(因為它們保留了POST數據) 。

但是,重定向307被認為是臨時的,而我打算永久使用https,所以它似乎不是最佳選擇? 當然,我可以使用308,但這個似乎是“新的”並且沒有得到所有瀏覽器的正確支持(根據我在stackoverflow上發現的許多評論)。 也許有人知道在.htaccess中使用更好的重寫規則?

PS我知道最好的想法是默認使用301重定向和修改腳本將數據發布到https(我已經這樣做了),但是可能需要很長時間,而所有客戶端都會在他們的服務器上更新腳本,這就是為什么另一個也需要解決方法。

保留301,將條件改為:

RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_METHOD} !=POST

如果客戶端的舊腳本使用任何其他方法,則必須更改第二個條件以包含它,例如:

RewriteCond %{REQUEST_METHOD} !^(?:POST|PUT)$

正常的請求/爬行將始終以GETHEAD開始,因此強制使用https,因此后續請求也將使用它。 確保您網站內容中的所有網址都是相對或相對的。

暫無
暫無

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

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