![如何將除連接埠之外的所有內容重寫為 HTTPS](https://rvso.com/image/1618774/%E5%A6%82%E4%BD%95%E5%B0%87%E9%99%A4%E9%80%A3%E6%8E%A5%E5%9F%A0%E4%B9%8B%E5%A4%96%E7%9A%84%E6%89%80%E6%9C%89%E5%85%A7%E5%AE%B9%E9%87%8D%E5%AF%AB%E7%82%BA%20HTTPS.png)
我在網路伺服器上安裝了 Netdata 以取得統計資料。要查看那些我應該使用:http://任何:19999。但是,所有內容都會使用以下命令重定向到我的網頁伺服器上的 HTTPS:
RewriteEngine On
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
有什麼優雅的方法可以確保指向 19999 連接埠的任何內容都會轉到 HTTP? (並且不會一次又一次地重定向到 HTTPS ..)
我想這可以透過在顯示 RewriteRule 之前添加一些條件來完成,對嗎?但如何呢?關於重寫規則的手冊頁讓我感到困惑,所以歡迎任何幫助!
答案1
您可以使用新增此程式碼來重新導向所有使用特定連接埠的服務以使用 HTTP 而不是 HTTPS
RewriteEngine On
RewriteCond %{SERVER_PORT} 19999
RewriteRule ^(.*)$ http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
您也可以使用此程式碼來過濾其他連接埠:
RewriteCond %{SERVER_PORT} !19999
這將為所有不使用 19999 連接埠的網頁執行下一個程式碼。
答案2
嘗試使用重定向反而:
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>