Apache Vhost funktioniert nicht

Apache Vhost funktioniert nicht

Ich habe mehrere Domänen, die auf ein und denselben Server verweisen. Nun möchte ich für jede Domäne einen Vhost erstellen. Bei manchen Domänen funktioniert das bereits, bei allen jedoch nicht.

Beispiel: Ich navigiere zur Domain "b.com" und bekomme die Webseite angezeigt, die bei "a.com" angezeigt werden soll. Bei "a.com" funktioniert allerdings alles. Die Anfrage von "b.com" wird auch im Log von "a.com" gespeichert und dort wird auch angezeigt, dass ich zu "a.com" navigiert bin.

Die DNS-Verwaltung erfolgt bei Cloudflare. Jede Domain hat einen TXT-Record mit ihrem Domainnamen.

Kannst du mir helfen?

Ich habe meine Konfigurationen auf das Minimum reduziert. Das sind also die 2 Dateien.

Erste Konfiguration:

<VirtualHost a.com:80>
  Servername a.com
  DocumentRoot /var/www/a.com
</VirtualHost>

Zweite Konfiguration:

<VirtualHost b.com:80>
  Servername b.com
  DocumentRoot /var/www/b.com
</VirtualHost>

Vielen Dank im Voraus!

Antwort1

Der Parameter für <VirtualHost ...>teilt dem Webserver mit, welchelokale IP-Adressezum Binden an. Selbst wenn Sie einen Namen angeben, wird dieser nur zum Auflösen einer IP-Adresse verwendet. (Er wird beispielsweise verwendet, wenn der Server viele IP-Adressen hat und jede Domäne eine dedizierte IP-Adresse hat.)

Die meisten virtuellen Hosts sind namensbasiert und nicht adressbasiert. Daher ist dieser Parameter nutzlos und Sie sollten stattdessen einfach die Platzhalteradresse angeben *. Stattdessen unterscheidet der Apache-Webserver virtuelle Hosts anhand ihrer ServerNameund ServerAlias-Parameter.

Ein StandardNamensbasierter virtueller HostDie Konfiguration sieht folgendermaßen aus:

<VirtualHost *:80>
    ServerName a.example.tld
    DocumentRoot /var/www/a
</VirtualHost>

<VirtualHost *:443>
    ServerName a.example.tld
    DocumentRoot /var/www/a
    SSLEngine On
    SSLCertificateFile [...]
</VirtualHost>

---

<VirtualHost *:80>
    ServerName b.example.tld
    DocumentRoot /var/www/b
</VirtualHost>

<VirtualHost *:443>
    ServerName b.example.tld
    DocumentRoot /var/www/b
    SSLEngine On
    SSLCertificateFile [...]
</VirtualHost>

Wenn der Server sowohl HTTP als auch HTTPS bereitstellen soll, musst du noch für jeden Port den vhost angeben (:80 und :443). Ob du das benötigst oder nicht, hängt möglicherweise von deiner Cloudflare-Konfiguration ab.

Wenn SiealtBei Apache-Versionen wie v2.2 oder älter benötigen Sie zusätzlich diese Optionen (in v2.4 oder neuer sind sie nicht mehr vorhanden):

NameVirtualHost *:80
NameVirtualHost *:443

verwandte Informationen