所以訪問我的網站example.com
可以按預期進行。我成功配置了重定向,以便abc.example.com
重定向到example.com/abc
.
設定檔如下所示abc.example.com.conf
:
<VirtualHost *:80>
ServerName abc.example.com
RedirectPermanent / https://example.com/abc
</VirtualHost>
我的問題:
當透過在瀏覽器中輸入原始 IP 位址來造訪我的網站時,我也會被重新導向到example.com/abc
這不是所需的行為。瀏覽器中的原始 IP 應該會讓我失望example.com
這是example.com.conf
文件:
<VirtualHost *:80>
ServerName example.com
ServerAlias example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com [OR]
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
我需要更改什麼,以便當我輸入我的 IP 位址時example.com
得到服務而不是abc.example.com
?
答案1
這是因為您的虛擬主機之一充當預設主機。當ServerName
at 伺服器等級(即不在VirtualHost
區塊中)與 a 內的一個相符時VirtualHost
,這將是預設值。如果未設置,則它通常是第一個虛擬主機。
假設您使用的是全虛擬主機配置,答案是在虛擬主機區塊之外設定ServerName example.com
(和相應的)。Listen
參考:https://httpd.apache.org/docs/2.4/vhosts/name-based.html
主要主持人消失
任何與現有請求不符的請求都將由全域伺服器配置處理,無論主機名稱或伺服器名稱為何。
當您將基於名稱的虛擬主機新增至現有伺服器,且虛擬主機參數與預先存在的 IP 和連接埠組合相符時,請求現在將由明確虛擬主機處理。在這種情況下,通常明智的做法是建立一個預設虛擬主機,其伺服器名稱與基本伺服器的伺服器名稱相符。同一介面和連接埠上但需要單獨配置的新網域可以新增為後續(非預設)虛擬主機。