僅在開發域上將 http 重定向到 https(與活動域相同的伺服器)
假設我有 1 個 Ubuntu 伺服器,其中包含兩個站點(它們是子域,並且它們還包含其他子域的程式碼):
- house.example.com(我也有 api.example.com)- 生產站點
- house-dev.example.com(也有 api-dev.example.com) - 開發站點
如何將 house-dev.example.com 的所有 http 請求重定向到https://house-dev.example.com並將 api-dev.example.com 的所有 http 請求重定向到https://api-dev.example。 com ?
我在啟用站點的 conf 文件是:
對於 house.example.com
<VirtualHost *:80> ServerName example.com ServerAlias house.example.com api.example.com (...) </VirtualHost> <VirtualHost *:443> (...) </VirtualHost>
對於 house-dev.example.com:
<VirtualHost *:80> ServerName example.com ServerAlias house-dev.example.com api-dev.example.com Redirect "/" "https://house-dev.example.com" (...) </VirtualHost> <VirtualHost *:443> (...) </VirtualHost>
如何將 house-dev(和相關的 api-dev)的所有 http 流量重定向到 https?
我有所有 .crt 和 .key 文件,並且路徑都是正確的。我正在討論這個
Redirect
方法。我已經嘗試過,
Redirect "/" "https://house-dev.example.com"
它適用於.house-dev``http://api-dev.example.com``https://house-dev.example.com
我已經嘗試過重定向“ /”“https://house-dev.example.com ”,它適用於house-dev,但是當我嘗試http://api-dev.example.com時,重定向會轉到https: //house-dev.example.com。
當然可以,因為兩個主機名都由同一個虛擬主機處理,並且您有一個固定的重定向到
house-dev.example.com
.一個簡單的解決方法是為每個主機名創建一個單獨的埠 80 虛擬主機,並在每個主機名中都有正確的重定向條目。
或者,您可以使用
RewriteRule
來執行重定向。類似於以下內容(未經測試)RewriteEngine on RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,QSA,L]
Redirect
如果您在位置塊中使用變數,顯然也可以使用變數。以下來自https://stackoverflow.com/questions/40289269/using-redirectmatch-with-http-host-in-the-destination<Location "/"> Redirect "https://%{HTTP_HOST}%{REQUEST_URI}" </Location>