Https

僅在開發域上將 http 重定向到 https(與活動域相同的伺服器)

  • May 2, 2018

假設我有 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>

引用自:https://serverfault.com/questions/910298