Nachdem ich meinen Server heute neu aufgesetzt habe, musste ich feststellen, dass mir eine wichtige Datei fehlt…
Was ich will:
ich starte den Browser und geben z.B. “test.local” ein.
der Apache soll nun “wissen”, dass das Verzeichnis /www/test/ als document_root zu verwenden ist.
das selbe soll aber auch bei “test2.local” und “mehr-tests.local” passieren, also entsprechend auf /www/test2/ und /www/mehr-tests/ verweisen.
Ich weiß noch, dass das mit VirtualHost-Konfigurationen und Rewrite Rules ging… keine Ahnung, wie.
Virtual Hosts selbe “fest verdrahten” ist mir zu aufwändig (atm 20+ “Domains”) und zu umständlich (ein neues Verzeichnis unter /www/neues_verzeichnis/ soll sofort ohne umständliche Konfigurationen verfügbar sein).
Ich weiß, dass das funktioniert (hatte) - aber ich weiß nicht mehr, wie…
Das ist ja gerade der Punkt… es ging ja, ohne dass ich für jedes neue Projekt einen neuen vhost anlegen musste.
Ordner anlegen (z.B. “www/foo”), Adresse (“foo.local”) aufrufen - fertig.
Irgendetwas um RewriteCond %{http_host} herumgestricktes…
genau das meine ich ja - den einen einzigen eintrag, den Du hast, der bisher immer alle anderen subdomains übernommen hat, nicht etwa alle anderen, die Du wie Du jetzt meinst, noch hinzugeben müsstest, da es nicht mehr so wie früher funktioniert.
@miro: wir reden noch aneinander vorbei.
Die ursprüngliche Konfiguration existiert nicht (mehr), wg. Neuinstallation… und natürlich habe ich beim Backup das apache-Verzeichnis vergessen.
Daher muss ich das nun komplett neu von Hand (noch dazu remote über ssh, der läuft wenigstens) „irgendwie“ hinbiegen.
So - nach einer längeren google-Sitzung habe ich nun die Lösung:
[code]### Default vHost
<VirtualHost *:80>
DocumentRoot /home/www
ServerName server
<Directory /home/www>
Options +Indexes
</Directory>
# Der vHost soll alle Anfragen annehmen, die mit ".local" enden.
ServerAlias *.local
# Script zur Umleitung in das Verzeichnis
# Bsp.: neu.local nutzt als DocumentRoot /home/www/neu
UseCanonicalName Off
RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^.]+\.local$
RewriteCond %{REQUEST_URI} !^/icons
RewriteRule ^(.+) %{HTTP_HOST}$1
RewriteRule ^([^.]+)\.local(.*) /home/www/$1$2
[/code]
Jetzt muss ich, um ein neues Projekt anzulegen, nur zwei Schritte ausführen:
das Verzeichnis auf dem Webserver anlegen (in /home/www)
meine lokale host-Datei so anpassen, dass die Anfrage auf den Server umgeleitet wird:
Jetzt Browser starten, “neu.local” eingeben und freuen - weitere Serverkonfigurationen entfallen.
Der Code da stammt aus einer host / mhost / vhost / whatever conf =) ( dioese findest du im apache verzeichnis )
damit werden unter apache die Domains und deren Realer Pfad festgelegt, aber auch optionen die den Webspace betreffen, z.B. können hier auch php-rechte festgelegt werden
[code]### Default vHost
<VirtualHost *:80>
// Hier könnte z.B. auch www.meine seite.de:80 stehen ( der * ist Platzhalter für alle //Domains die kein Homeverzeichnis haben aber auf den Server weisen
DocumentRoot /home/www // Das Homeverzeichnis für deine Domain auf dem Server
ServerName server
<Directory /home/www>
Options +Indexes // Aktiviert Directory optionen wie Z.B. das Indexieren
</Directory>
# Der vHost soll alle Anfragen annehmen, die mit ".local" enden.
ServerAlias *.local
// hier beginnt der “Htacess” Teil / http://de.wikipedia.org/wiki/Htaccess
# Script zur Umleitung in das Verzeichnis
# Bsp.: neu.local nutzt als DocumentRoot /home/www/neu
UseCanonicalName Off
RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^.]+.local$
RewriteCond %{REQUEST_URI} !^/icons
RewriteRule ^(.+) %{HTTP_HOST}$1
RewriteRule ^([^.]+).local(.*) /home/www/$1$2
[/code]
Der unterschied zwischen Htaccess und der Vhost.conf ist im wesentlichen, das du bei htaccess den server nicht neustarten musst und nicht wie in diesem Beispiel den apache neustarten musst
Ausserdem kannst du mit dieser vhost.conf wesentlich mehr einstellen ( z.B. das du jetzt die rewrite-rule für ALLE domains auf dem server steuern lkannst
Gibt es diese Datei von Anfang an oder muss man die selbst anlegen? Unter etc/apache2 finde ich diese nicht, dort sind nur ein paar allgemeine Konfigurationsdateien.
ansonsten stopf es doch direkt in die httpd.conf rein
Diese läd am ende eh nur alle anderen configs
[code]# Multi-language error messages
Include conf/extra/httpd-multilang-errordoc.conf
Fancy directory listings
Include conf/extra/httpd-autoindex.conf
Language settings
Include conf/extra/httpd-languages.conf
User home directories
Include conf/extra/httpd-userdir.conf
Real-time info on requests and configuration
Include conf/extra/httpd-info.conf
Virtual hosts
Include conf/extra/httpd-vhosts.conf
Local access to the Apache HTTP Server Manual
Include conf/extra/httpd-manual.conf
Distributed authoring and versioning (WebDAV)
Include conf/extra/httpd-dav.conf
Various default settings
Include conf/extra/httpd-default.conf
Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf[/code][size=85]Diese Infos stammen im übrigen von einer Windows bzw. XAMPP Installation.
Daten können also abweichen.[/size]