heinetz: http_vhosts.conf und VirtualDocumentRoot

Hallo Forum,

bei der Definition meiner vhosts unter Apache gibt es ein
Problem. Vielleicht hat jemand von euch eine Idee, wie ich
es löse.

Das ganze sieht folgendermassen aus:
----------------------------------------------------------
1. Das frisch installiert Xammp befindet sich unter:
   /Applications/xampp/xamppfiles/htdocs

... und ist unter:
   httpd://localhost

... und den Alias:
   httpd://leopold

... erreichbar.

2. Meine Projekte befinden sich alle unter:
   /Users/martinhein/Sites/

... und sind unter

httpd://project.leopold.dev

... erreichbar, nachdem ein Ordner:

/Users/martinhein/Sites/projekt

... angelegt wurde.
----------------------------------------------------------

Die Konfiguration sieht so aus:
----------------------------------------------------------
NameVirtualHost *:80
NameVirtualHost *:443

<Directory "/Users/martinhein/Sites">
    Options Indexes FollowSymLinks ExecCGI Includes
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

<VirtualHost *:80>
    VirtualDocumentRoot /Users/martinhein/Sites/%1
</VirtualHost>

<VirtualHost *:443>
    VirtualDocumentRoot /Users/martinhein/Sites/%1

SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile /Applications/xampp/etc/ssl.crt/server.crt
    SSLCertificateKeyFile /Applications/xampp/etc/ssl.key/server.key
</VirtualHost>

<VirtualHost *:80>
    ServerName localhost
    ServerAlias leopold
    ServerAlias 127.0.0.1
    DocumentRoot "/Applications/xampp/xamppfiles/htdocs"
</VirtualHost>
----------------------------------------------------------

Nun zu dem Problem:
-------------------
Wenn ich probiere, einen vhost aufzurufen, der als Ordner
nicht vorhanden ist, reagiert der Server mit einem 404
(The requested URL / was not found on this server.). Das
erscheint mir auch irgendwie logisch, bin mir aber nicht
ganz sicher, was genau passiert.

Ich möchte gerne, dass dann der Inhalt von http://leopold
angezeigt wird, bzw. dass dann dorthin eine Umleitung statt-
findet.

Ach ja, nur noch zur Info:

Es handelt sich hier um mein lokales Entwicklungssytem
und nicht um irgendeinen 'heissen' Server.

vielen Dank für Tipps und

beste gruesse,
heinetz

  1. Moin!

    Wenn ich probiere, einen vhost aufzurufen, der als Ordner
    nicht vorhanden ist, reagiert der Server mit einem 404
    (The requested URL / was not found on this server.). Das
    erscheint mir auch irgendwie logisch, bin mir aber nicht
    ganz sicher, was genau passiert.

    Ich möchte gerne, dass dann der Inhalt von http://leopold
    angezeigt wird, bzw. dass dann dorthin eine Umleitung statt-
    findet.

    Dann würde ich erstmal ganz banal probieren, ob das getan wird, wenn du deinen leopold-VHost als allererstes in der Datei angibst. Der Apache liefert den ersten genannten VHost nämlich dann aus, wenn kein anderer VHost explizit passt. Ob das bei der VirtualDocumentRoot-Direktive auch passiert (man könnte als Gegenargument anführen, dass damit ja immer ein VHost existiert, der ggf. einfach nur keine Dateien hat), wäre herauszufinden. Die Doku zu mod_vhost_alias ist jedenfalls etwas schweigsamer zu dieser Frage - ich würde also erstmal Standardverhalten annehmen.

    - Sven Rautenberg

    1. moin,

      Dann würde ich erstmal ganz banal probieren, ob das getan wird, wenn du deinen leopold-VHost als allererstes in der Datei angibst. Der Apache liefert den ersten genannten VHost nämlich dann aus, wenn kein anderer VHost explizit passt. Ob das bei der VirtualDocumentRoot-Direktive auch passiert (man könnte als Gegenargument anführen, dass damit ja immer ein VHost existiert, der ggf. einfach nur keine Dateien hat), wäre herauszufinden. Die Doku zu mod_vhost_alias ist jedenfalls etwas schweigsamer zu dieser Frage - ich würde also erstmal Standardverhalten annehmen.

      genau das hatte ich auch als erstes probiert:

      Den 'statisch' definierten vhost 'leopold' als erstes
      definieren, damit der quasi als default verwendet wird,
      wenn der dynamische Teil nicht matched. Das Ergebnis
      dessen ist allerdings, dass dann der dynamische Teil
      scheinbar nicht mehr ausgeführt wird und alle Requests
      mit dem 'statischen' Teil beantwortet werden.

      Ich hatte auch schon versucht, für den leopold-VHost einen
      weiteren Alias *.leo.dev zu definieren. Das verhält sich
      dann genauso, als hätte ich den statischen Teil als erstes
      definiert.

      gruesse,
      heinetz

  2. Ahoi,

    mal dumm gefragt: kollidiert denn VirtualDocumentRoot mit ServerName? Oder ist das genau das Problem? Sprich: ohne VirtualDocumentRoot läufts, aber nicht mit?

    Dank und Gruß,

    frankx