Christoph Schnauß: Apache/php

Beitrag lesen

hallo ihr beiden,

"localhost" braucht keinen virtuellen host, der localhost ist immer vorhanden. Wenn man denn möchte, kann man allerdings für "phpmyadmin" einen virtuellen host anlegen.

Nimm mal das NameVirtualHost *:80 wieder in die Konfiguration

Das ist sogar zwingend erforderlich, wobei wiederum der port nicht erforderlich ist.

<VirtualHost *:80>
    ServerName localhost

Das ist überflüssig.

Etwas leichter ist es, anstelle des * die lokale IP zu verwenden  -  und wenns keine gibt, dann eben die loopback-Adresse. Also:

NameVirtualHost 127.0.0.1
<VirtualHost 127.0.0.1>
  ServerName phpmyadmin
...

Darauf hättet ihr auch kommen können, wenn ihr die Fehlermeldung

[Mon Jan 12 15:51:23 2004] [warn] VirtualHost 127.0.0.1:80 overlaps with Virtual Host 127.0.0.1:80, the first has precedence, perhaps you need a NameVirtualHost directive

richtig gelesen hättet. Genau das macht nämlich den Unterschied von IP-gestützten und namensgestützten virtualhosts aus.

Ich persönlich habe (hier im Forum mehrfach geäußerte) Vorbehalte gegenüber der 127.0.0.1 bei virtualhosts  -  das bedeutet jedoch nicht, daß das nicht funktionieren würde.

Wichtig ist noch, daß dieser virtuelle Host keine Adresse mit einer im Internet vorhandenen TLD bekommt  -  das hat bis Apache 2.0.3x noch funktioniert, mit den aktuellen Apaches gehts glücklicherweise nicht mehr.

Beispiel: meine eigene Seite http://www.christoph-schnauss.de gibt es im Internet. Wenn ich jetzt für Updatezwecke und irgendwelche Basteleien, die ich später hochladen möchte, auch noch einen virtualhost in der Form

NameVirtualHost 192.168.0.1
<VirtualHost 192.168.0.1>
  ServerName www.christoph-schnauss.de
...

einrichte und auch noch die hosts-Datei entsprechend einrichte, bekomme ich grundsätzlich unter http://www.christoph-schnauss.de meinen virtuellen host zu sehen  -  es sei denn, ich kommentiere den Eintrag in der hosts-Datei wieder aus.

Das ist auch in Ordnung so. Der einzige Weg, _solche_ Konflikte zu umgehen, liegt meines Wissens darin, dem lokalen Apache dann halt eine andere Portnummer zu übergeben, beispielsweise 42 361 *g*. Oder man nimmt eben nach gründlicher Lektüre der Apache-Dokumentation _keine_ im Internet vorhandene TLD für den lokalen Apache, sonderbeispielsweise sowas:
www.christoph-schnauss.test

... dann funktioniert es wieder.

Etwas Lektüre gefällig? Die gibts unter http://httpd.apache.org/docs-2.0/vhosts/

Grüße aus Berlin

Christoph S.