Debian
子域的 Debian 10 apache2 虛擬主機
我有和
Debian 10
配置子域。主域配置: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。因為當我添加第二個域時,它應該只從虛擬主機中為給定子域分配的文件夾中獲取文件
我假設您正在瀏覽的所有主機都具有相同的 IP 地址。也許這會有所幫助
RewriteEngine on RewriteCond %{HTTP_HOST} !^api.system.com RewriteRule ^ - [L,R=404]
尚未在我自己的系統上對其進行測試,但在瀏覽 api.system.com 以外的任何 URL 時,它應該返回 404 錯誤。這是你要求的嗎?