Hi Ulrich,
Moin,
ersteinmal ganz herzlichen Dank für die wirklich ausführliche Antwort.
Was den Sicherheitsaspekt angeht, kann man den völlig vernachlässigen, da der Apache nur lokal läuft, und nur wenn ich keine Internet Verbindung aufgebaut habe.
Ok, trotzdem solltest du dich einer Sache vergewissen - in der httpd.conf gibt es eine Zeile mit der Listen-Direktive, normalerweise dürfte da Listen 80
stehen, schreibe da Listen 127.0.0.1:80
, dann nimmt dein Apache keine Anfragen mehr von extern entgegen.
NameVirtualHost *:80 #<-oder muß ich hier die Wildcard austauschen?
<VirtualHost *:80> #<- und/oder hier?
Du kannst die Wildcards an den Stellen getrost lassen.
Das Ergebnis ist, daß unter localhost die htdocs/index.* aufgerufen wird, aber unter http://www.aaa.test bzw. http://aaa.test leider immer nur der Error 403 kommt. Im Verzeichnis aaa ist allerdings eine index.html vorhanden.
Wenn ich in der DokumentRoot aber den kompletten Pfad angebe, vom Laufwerk an, dann sollte das doch gehen? Oder muß ich von der ServerRoot aus referenzieren?
Nein, und das ist das, was ich dir vorher erklären wollte - normalerweise darf man erstmal _nur_ auf das Verzeichnis htdocs zugreifen! Für alle anderen Verzeichnisse kommt ein Forbidden.
Das einfachste wäre gewesen, wenn du einfach die Ordner für localhost und aaa in den Ordner htdocs gelegt hättest, also:
C:\xampplite\htdocs <- In diesem Ordner liegen dann keine Dateien mehr
C:\xampplite\htdocs\localhost <- Hier die Dateien für localhost
C:\xampplite\htdocs\aaa <- Hier die Dateien für aaa.www
Das wäre das einfachste - aber wenn schon, dann machen wir es jetzt auch richtig ;-) Ist auch nicht wirklich schwer. So gehts:
# Irgendwo in der httpd.conf stehen die folgenden Zeilen,
# welche den Zugriff für alle Order erst mal verbieten,
# diese Zeilen solltest du wegen der Sicherheit auch
# NICHT ENTFERNEN!
<Directory />
Order deny,allow
Deny from All
# Hier können eventuell noch weiter Zeilen stehen...
</Directory>
# Für die Virtual Hosts müssen für für das DocumentRoot
# Verzeichnis oben beschriebenes Verbot wieder überschreiben
<VirtualHost *:80>
ServerName localhost
# Der Vollständigkeit halber würde ich hier noch die E-Mail Adresse des
# Server Admins notieren bzw. des für diesen VHost Zuständigen
ServerAdmin ich@example.org
DocumentRoot "F:/xampplite/htdocs"
# Die nachfolgenden Zeilen stehen schon irgendwo in der httpd.conf
# Für das bessere Verständnis notiere ich sie hier nochmal
<Directory "F:/xampplite/htdocs">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName www.aaa.test # Hier würde ich aaa.test als ServerName notieren
ServerAlias aaa.test # und www.aaa.test als ServerAlias, läuft aber aufs
# gleiche Ergebnis hinaus
DocumentRoot "F:/xampplite/aaa"
# Mit den folgenden Zeilen erlauben wir den Zugriff für alle
# Aufrufe aus dem Internet für den Ordner aaa
<Directory "F:/xampplite/aaa">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Innerhalb des sogenannten Directory-Containers kannst du auch noch weitere Konfigurationen notieren, z.B. AllowOverride. Normalerweise ist AllowOverride None gesetzt, wenn du .htaccess Dateien zur Authentifizierung verwenden willst, musst du AllowOverride AuthConfig notieren, willst du zusätzlich auch noch die Index-Ansicht von Verzeichnissen beeinflussen können, so ist AllowOverride AuthConfig Indexes
nötig.
Eine weiter Direktive, die du da auch noch verwenden könntest und die auch häufig gebraucht wird, ist Options.
MfG, Dennis.