Apache httpd:別名由虛擬主機繼承?

Apache httpd:別名由虛擬主機繼承?

當預設伺服器包含

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 的指令。

相關內容