Tengo Debian 10
y apache2
y en virtual hosts
configuración para subdominio. Configuración para el dominio 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 la configuración de mi subdominio en 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>
Y ahora, cuando escribo system.com en mi navegador, muestra index.html del directorio system.com. Cuando escribo api.system.com, muestra index.html de la carpeta api.system.com.
Salida 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
Todo parece estar bien, pero el problema está en el subdominio. Cuando escribo api.system.com obtengo el contenido de index.html del directorio api.system.com. Pero cuando escribo, por ejemplo, api55.system.com, obtengo index.html de api.system.com. El mismo resultado es para api41.system.com, etc. A pesar de que estos dominios no existen y no existe configuración en hosts virtuales para estos dominios.
Cómo configurar hosts virtuales para permitir obtener index.html solo para un dominio específico. Porque cuando agrego un segundo dominio, solo debería obtener el archivo de la carpeta asignada en el host virtual para un subdominio determinado.
Respuesta1
Supongo que todos los hosts por los que navega tienen la misma dirección IP. Quizás esto ayudaría
RewriteEngine on
RewriteCond %{HTTP_HOST} !^api.system.com
RewriteRule ^ - [L,R=404]
No lo he probado en mis propios sistemas, pero debería devolver un error 404 al navegar a cualquier URL que no sea api.system.com. ¿Es esto lo que estás pidiendo?