Debian 10 Apache2 virtuelle Hosts für Subdomain

Debian 10 Apache2 virtuelle Hosts für Subdomain

Ich habe Debian 10und apache2und in virtual hostsder Konfiguration für die Subdomäne. Konfiguration für die Hauptdomäne:

<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>

Für meine Subdomänenkonfiguration im virtuellen Host:

<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>

Und wenn ich jetzt system.com in meinen Browser eingebe, wird index.html aus dem Verzeichnis system.com angezeigt. Wenn ich api.system.com eingebe, wird index.html aus dem Ordner api.system.com angezeigt.

Ausgabe für Befehl: 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

Alles sieht ok aus, aber das Problem liegt bei der Subdomain. Wenn ich api.system.com eingebe, erhalte ich den Inhalt von index.html aus dem Verzeichnis api.system.com. Aber wenn ich beispielsweise api55.system.com eingebe, erhalte ich auch index.html von api.system.com. Dasselbe Ergebnis gilt für api41.system.com usw. Obwohl diese Domänen nicht existieren und keine Konfiguration in virtuellen Hosts für diese Domänen vorhanden ist

So konfigurieren Sie virtuelle Hosts, damit index.html nur für bestimmte Domänen abgerufen werden kann. Denn wenn ich eine zweite Domäne hinzufüge, sollte nur die Datei aus dem Ordner abgerufen werden, der im virtuellen Host für die angegebene Subdomäne zugewiesen ist.

Antwort1

Ich gehe davon aus, dass alle Hosts, die Sie durchsuchen, dieselbe IP-Adresse haben. Vielleicht hilft das

RewriteEngine on
RewriteCond   %{HTTP_HOST} !^api.system.com
RewriteRule ^ - [L,R=404]

Ich habe es nicht auf meinen eigenen Systemen getestet, aber es sollte einen 404-Fehler zurückgeben, wenn ich zu einer anderen URL als api.system.com navigiere. Ist das, wonach Sie fragen?

verwandte Informationen