Web-Server
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
?
這是因為您的虛擬主機之一是預設的。當
ServerName
at 伺服器級別(即不在VirtualHost
塊中)與 a 中的一個匹配VirtualHost
時,這將是預設值。如果沒有設置,那麼它通常是第一個虛擬主機。假設您使用的是全虛擬主機配置,答案是在虛擬主機塊之外設置
ServerName example.com
(和相應的)。Listen
參考:https ://httpd.apache.org/docs/2.4/vhosts/name-based.html
主要主人走了
任何與現有請求不匹配的請求都由全域伺服器配置處理,無論主機名或伺服器名如何。
當您將基於名稱的虛擬主機添加到現有伺服器,並且虛擬主機參數匹配預先存在的 IP 和埠組合時,請求現在將由顯式虛擬主機處理。在這種情況下,通常明智的做法是創建一個預設虛擬主機,其 ServerName 與基本伺服器的名稱匹配。然後可以將相同介面和埠上的新域添加為後續(非預設)虛擬主機,但需要單獨配置。