我在子網域的配置中有Debian 10
and 。主域配置:apache2
virtual hosts
<VirtualHost *:80>
ServerName system.com
ServerAlias system.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/system.com
<Directory /var/www/system.com>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
對於我在虛擬主機中的子網域配置:
<VirtualHost *:80>
ServerName api.system.com
ServerAlias api.system.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/api.system.com
<Directory /var/www/api.system.com>
Options -Indexes +FollowSymLinks
AllowOverride All
# Order Allow,Deny
# Allow from All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
現在,當我在瀏覽器中輸入 system.com 時,它會顯示 system.com 目錄中的 index.html 。當我輸入 api.system.com 時,它會顯示 api.system.com 資料夾中的index.html。
命令的輸出sudo apache2ctl -S
::
my@server088331:/etc/apache2/sites-available$ sudo apache2ctl -S
VirtualHost configuration:
*:80 is a NameVirtualHost
default server api.system.com (/etc/apache2/sites-enabled/api.system.conf:1)
port 80 namevhost api.system.com (/etc/apache2/sites-enabled/api.system.conf:1)
alias api.system.com
port 80 namevhost phpmyadmin.system.com (/etc/apache2/sites-enabled/phpmyadmin.conf:1)
alias phpmyadmin.system.com
port 80 namevhost system.com (/etc/apache2/sites-enabled/system.conf:1)
alias system.com
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex default: dir="/var/run/apache2/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33
一切看起來都不錯,但問題出在子網域。當我輸入 api.system.com 時,我從 api.system.com 目錄取得 index.html 的內容。但當我輸入例如 api55.system.com 時,我也會從 api.system.com 取得 index.html 。 api41.system.com 等的結果相同。
如何配置虛擬主機以僅允許取得特定網域的index.html。因為當我新增第二個網域時,它應該只從給定子網域的虛擬主機中指派的資料夾中取得文件
答案1
我假設您正在瀏覽的所有主機都具有相同的 IP 位址。也許這會有所幫助
RewriteEngine on
RewriteCond %{HTTP_HOST} !^api.system.com
RewriteRule ^ - [L,R=404]
尚未在我自己的系統上對其進行測試,但在瀏覽 api.system.com 以外的任何 URL 時,它應該會傳回 404 錯誤。這就是你所要求的嗎?