![Apache httpd:別名由虛擬主機繼承?](https://rvso.com/image/769272/Apache%20httpd%EF%BC%9A%E5%88%A5%E5%90%8D%E7%94%B1%E8%99%9B%E6%93%AC%E4%B8%BB%E6%A9%9F%E7%B9%BC%E6%89%BF%EF%BC%9F.png)
當預設伺服器包含
Alias /bla /srv/www/blub
那麼所有的 VirtualHost 也可以存取 acecss /bla
。
我必須說我沒有預料到這一點。 IMO 虛擬伺服器應該有自己單獨的設定。
這是一個錯誤還是一個功能?我可以關閉此行為嗎?
答案1
設定不限於特定的 VirtualHost,而是放置在主伺服器設定檔中(即httpd.conf
或在配置片段中加載Include
和/或IncludeOptional
指令)對整個伺服器有效,包括任何和所有虛擬主機。
範圍:放置在主設定檔中的指令適用於整個伺服器。如果您只想更改伺服器的一部分的配置,您可以透過將指令放在 、 和 部分中來確定指令
<Directory>
的<DirectoryMatch>, <Files>, <FilesMatch>, <Location>
範圍<LocationMatch>
。這些部分限制了它們所包含的指令的應用到特定的檔案系統位置或 URL。它們也可以嵌套,從而允許非常細粒度的配置。
httpd 能夠同時為許多不同的網站提供服務。這稱為虛擬主機。也可以透過將指令放置在
<VirtualHost>
部分內來確定指令的範圍,以便它們僅適用於特定網站的請求。
不要在主 httpd.conf 中放置您不希望應用於所有 VirtualHosts 的指令。