hallo André,
ich darf davon ausgehen, daß du dir inzwischen meinen Artikel nochmal angeschaut hast. Das Kapitel über virtuelle Hosts ist noch aktuell, da das Konzept für virtuelle Hosts mit den neueren Apache-Versionen keine Veränderungen erfahren hat.
aus der host:
127.0.0.1 www.test.test
Da wird es schon schwierig. Die Datei heißt nicht "host", sondern _hosts_, und auf einer Windows-Maschine liegt sie in %systemroot%\system32\drivers\etc. Und wenn du "aus" schreibst, ist das wohl nicht der vollständige Inhalt. Daher ein paar Denkanstöße:
Die 127.0.0.1 ist die sogenannte Loopbackadresse und daher normalerweise für "localhost" vorgesehen; die 127.0.0.1 steht von Anfang an drin in der hosts-Datei. Diesen Eintrag solltest du nicht überschreiben. Du kannst allerdings nahezu beliebig viele weitere (lokale) Domainnamen für dieselbe IP eintragen. Wenn du nun irgendwelche Skrupel hast, daß du eventuell deinen "localhost" nicht mehr erreichen könntest (hast du das mit http://localhost mal getestet?), kannst du auch noch die IP 169.254.213.96 nehmen.
Es ist meiner Ansicht nach _deutlich_ sinnvoller, für eine am Rechner ja vermutlich vorhandene NIC eine statische IP zu vergeben. Beispielsweise 172.24.10.2 oder 192.168.0.x. Damit werden eventuelle Konflikte mit "localhost" vermieden, allerdings muß das, wie du ja bereits weißt, in der hosts-Datei eingetragen werden, damit dein Browser eine Namensauflöung hinkriegt.
Einen Namen wie "www.test.test" halte ich wegen der Verdopplung von "test" nicht für besonders elegant. Die TLD "test" ist wichtig, der Rest nicht. Ich tendiere eher zu solchen Namen wie "www.lokal.test", aber das ist einzig und allein deine Entcheidung.
aus der httpd-vhosts.conf:
<VirtualHost *:80>
ServerAdmin webmaster@test.test
DocumentRoot "C:/Programme/Apache Software Foundation/Apache2.2/htdocs/test"
ServerName www.test.test
ServerAlias www.test.test
ErrorLog "C:/Programme/Apache Software Foundation/Apache2.2/htdocs/test/logs"
CustomLog "C:/Programme/Apache Software Foundation/Apache2.2/htdocs/test/logs"
</VirtualHost>
Ümpf ... Naja, wieder nur "aus", das heißt, was da eventuell noch Wichtiges drinsteht, hast du als vermutlich uninteressant weggelassen, aber ich vermisse es jetzt als vermutlich ausschlaggebend.
Ein bißchen Theorie zuvor: du wirst mit allergrößter Wahrscheinlichkeit einen namensbasierten virtuellen Host einrichten wollen. Dazu ist aber die Angabe
NameVirtualHost
noch _vor_ (bzw. über) dem <VirtualHost ...>-Container zwingend erforderlich. Wenn du nun nur auf die Loopbackadresse zugreifen möchtest, nimmst du dafür
NameVirtualHost 127.0.0.1
und wenn es eine andere "private" Adresse sein soll, nimmst du eben
NameVirtualHost [private_adresse]
Das Sternchen (*) ist eine Wildcard, die du nach Möglichkeit nicht benutzen solltest - es "funzt" allerdings auch damit, nur müßtest du dann
NameVirtualHost *
angeben, was ziemlich doof aussieht und deinen Apache unter Umständen vor unlösbare Aufgaben stellt.
So, nun zu deinen Angaben:
DocumentRoot "C:/Programme/Apache Software Foundation/Apache2.2/htdocs/test"
Das "müßte" eigentlich funktionieren. Meines Erachtens ist es aber denkbar ungeschickt. Daß die Apache Foundation ein "dummy"-Verzeichnis mit dem Namen "htdocs" (dieser Name steht für "hypertext documents") vorsieht, ist nett, da man damit ja auf jeden Fall erstmal das Standarddokument zu sehen bekommt und also weiß, daß der neu eingerichtete Apache fröhlich draufloswurschteln kann. Aber wenn du ernsthaft mit virtuellen Hosts arbeiten möchtest, solltest du das schleunigst durch sowas Ernsthafteres wie beispielsweise
C:\www\mein_virthost
ersetzen. "C:\Programme" ist nun einmal ein _Programm_-Verzeichnis, in dem HTML-Dokumente und/oder PHP-Scripts und anderes, was nicht unmittelbar Windows-Programmbestandteil ist, eigentlich nichts zu suchen haben. Auf einer Linuxmaschine werden "DocumentRoot"-Verzeichnisse auch nicht in Programmverzeichnissen angelegt, sondern gleich nach /srv/www oder so ähnlich geschubst. Warum die Apache Foundation eine derart unsinnige Ablage für "htdocs" vorsieht, ist seit Jahren völlig unbegreiflich.
Allerdings: wenn du nun ein neues Verzeichnis für deine Webdokumente bastelst, alles, was dir wichtig ist, dorthin schiebst und den Wert für "DocumentRoot" wie vorgeschlagen radikal änderst, kann es passieren, daß dir dein Browser sagt: "you have no permissions to access /". Dann kuckst du auch ziemlich doof aus der Wäsche und weißt lediglich, daß du dich an mich wenden solltest, um das Problem zu beheben *g* - Es gibt in der httpd.conf (also im conf-Verzeichnis, und nicht in dessen Unterverzeichnis "default" eine Voreinstellung, die so aussieht:
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Satisfy all
</Directory>
Um einem virtuellen Host nun beispielsweise "C:\www\virthost" als DocumentRootzuweisen zu können, mußt du unter dieem Container angeben:
<Directory "C:/www/virthost">
(...)
</Directory>
ServerAlias www.test.test
Ist völlig überflüssig.
ErrorLog "C:/Programme/Apache Software Foundation/Apache2.2/htdocs/test/logs"
CustomLog "C:/Programme/Apache Software Foundation/Apache2.2/htdocs/test/logs"
Das solltest du auch überdenken. Es bringt dir bei nur _einem_ virtuellen Host überhaupt nichts. Warum willst du nicht das vordefinierte Verzeichnis für die Protokolldateien benutzen? Für deinen virtuellen Host kannst du trotzdem gesonderte Protokolldateien anlegen lassen, beispielsweise mit
ErrorLog logs/virthost.log
Ein zusätzliches "CustomLog" brauchst du nicht.
Aufruf im Browser:
http://www.test.test/
liefert: "It works" - die Standardmeldung aus dem /htdocs-Verzeichnis, aber nicht meine gewollte Startseite.
Warum das so ist, könnte dir eigentlich mit ein bißchen Nachdenken selber einfallen.
Was kann/muss ich noch tun?
Es gibt natürlich immer auch die Apache-Dokumentation, die man nicht ganz unbeachtet lassen sollte.
Grüße aus Berlin
Christoph S.