Eu tenho Debian 10
e apache2
e em virtual hosts
configuração para subdomínio. Configuração para domínio principal:
<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>
Para minha configuração de subdomínio no host virtual:
<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>
E agora, quando digito system.com no meu navegador, ele mostra index.html do diretório system.com. Quando digito api.system.com ele mostra index.html da pasta api.system.com.
Saída para comando 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
Tudo parece bem, mas o problema está no subdomínio. Quando digito api.system.com recebo o conteúdo de index.html do diretório api.system.com. Mas quando digito, por exemplo, api55.system.com, também obtenho index.html de api.system.com. O mesmo resultado é para api41.system.com etc. Apesar desses domínios não existirem e não existirem configuração em hosts virtuais para esses domínios
Como configurar hosts virtuais para permitir a obtenção de index.html apenas para um domínio específico. Porque quando eu adiciono o segundo domínio, ele só deve obter o arquivo da pasta atribuída no host virtual para determinado subdomínio
Responder1
Presumo que todos os hosts que você está navegando tenham o mesmo endereço IP. Talvez isso ajudasse
RewriteEngine on
RewriteCond %{HTTP_HOST} !^api.system.com
RewriteRule ^ - [L,R=404]
Não testei em meus próprios sistemas, mas deve retornar um erro 404 ao navegar para qualquer URL diferente de api.system.com. É isso que você está pedindo?