apache-Profi gesucht

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…

any ideas?

hi,

nennst Du bitte mal den entsprechenden (vhost-)konfigurationseintrag?

ciao

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…

hi,

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.

ciao

Da gibts ein Apache-Modul…
//Edit: Da isses ja: httpd.apache.org/docs/2.2/mod/mo … alias.html

@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. :morgen:

Daher muss ich das nun komplett neu von Hand (noch dazu remote über ssh, der läuft wenigstens) „irgendwie“ hinbiegen.

würde mich auch sehr interessieren wie das geht :smiley:
Also wenn ihr zu einer Lösung kommt bitte posten…^^

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:

  1. das Verzeichnis auf dem Webserver anlegen (in /home/www)
  2. 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.

Das erste ist keine .htaccess oder? Wo muss das hin?

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

lg Michi

PS:Ich ahbe jetzt ne quadcore :smiley::D:D

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.

ja ist stdnartmäßig mit dabei ( anders tut apache auch net^^)
guck mal in /etc/apache2/sites-enabled oder /etc/apache2/sites-avaible

ansonsten steht auch in der httpd.conf bzw apache2.conf ( je nach linux version) ganz unten welche virtualhost datein included werden sollen

lg Michi

ansonsten stopf es doch direkt in die httpd.conf rein :wink:
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]

Nachtrag:
Lol er hats noch ma ediert :stuck_out_tongue: “arsch” :smiley:

oh xD sorry