apache2 ip 重定向與子網域重定向衝突

apache2 ip 重定向與子網域重定向衝突

所以訪問我的網站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

這是因為您的虛擬主機之一充當預設主機。當ServerNameat 伺服器等級(即不在VirtualHost區塊中)與 a 內的一個相符時VirtualHost,這將是預設值。如果未設置,則它通常是第一個虛擬主機。

假設您使用的是全虛擬主機配置,答案是在虛擬主機區塊之外設定ServerName example.com(和相應的)。Listen

參考:https://httpd.apache.org/docs/2.4/vhosts/name-based.html

主要主持人消失

任何與現有請求不符的請求都將由全域伺服器配置處理,無論主機名稱或伺服器名稱為何。

當您將基於名稱的虛擬主機新增至現有伺服器,且虛擬主機參數與預先存在的 IP 和連接埠組合相符時,請求現在將由明確虛擬主機處理。在這種情況下,通常明智的做法是建立一個預設虛擬主機,其伺服器名稱與基本伺服器的伺服器名稱相符。同一介面和連接埠上但需要單獨配置的新網域可以新增為後續(非預設)虛擬主機。

相關內容