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 가져오기를 허용하도록 가상 호스트를 구성하는 방법 두 번째 도메인을 추가하면 해당 하위 도메인에 대해 가상 호스트에 할당된 폴더에서만 파일을 가져와야 하기 때문입니다.
답변1
나는 당신이 탐색하고 있는 모든 호스트가 동일한 IP 주소를 가지고 있다고 가정합니다. 아마도 이것이 도움이 될 것입니다
RewriteEngine on
RewriteCond %{HTTP_HOST} !^api.system.com
RewriteRule ^ - [L,R=404]
내 시스템에서 테스트하지는 않았지만 api.system.com 이외의 URL을 탐색할 때 404 오류가 반환되어야 합니다. 이것이 당신이 요구하는 것입니까?