Archiv der Kategorie “Apache Webserver”

Mehrere Webseiten auf einem Webspace

Um mehrere Webseiten auf einem Webspace laufen zu lassen benötigt man nicht unbedingt ein Webspace Paket für jede Domain (auch wenn dies von den meisten Webspace-Providern so mitgeteilt wird). Ist ja klar, die wollen auch Umsatz machen. Umsetzten kann man das Hosten von mehreren Webseiten auf einem Webspace mit einer .htaccess Datei auf dem Apache Webserver.

Im Normalfall haben Webspace Eingentümer einen Shared-Hosted-Webspace-Account.  Die eingene Webseite liegt also auf einem Server mit vielen anderen Webseiten. Dadurch hat man leider meist keinen Einfluss auf die Konfiguration des Servers wie es bei einem VServer oder Root-Server der Fall wäre. Im Normalfall würde das eigene Webspace-Paket leicht ausreichen um mehrere Webseiten darauf zu hosten, aber die Webspace-Provider richten die Pakete nicht so ein, dass man auf dem Webspace einfach mehrere Webseiten laufen lassen kann.

Unser Ziel ist also z.B domain1.com und domain2.de
auf einem Webspace laufen zu lassen.

Dazu müssen die beiden Domains klarerweise auf deinen Webspace zeigen. Am einfachsten kontakierst du dazu deinen Webspace-Provider. Der richtet dir die Domains für deinen Webspace ein.

Als nächstes müssen wir auf unserem Webspace 2 Ordner für unsere Webseiten erstellen. Wir gehen in userem Beispiel davon aus, dass der Document Root unseres Wespaces „/home/vserver/www/html/“ ist.

Wir legen jetzt den Ordner „domain1.com“ und „domain2.de“ in Unserem Document-Root an. In diese Ordner kommen dann die Dateien unserer Webseiten.

Unsere Verzeichnisstruktur sieht also folgendermaßen aus:

/home/vserver/www/html /domain1.com
/domain2.de

Als nächstes müssen wir eine „.htaccess“ Datei erstellen und diese in unserem Document-Root speichern.

In die .htaccess Dateie schreiben wir folgendes rein:

RewriteEngine On

#Eintrag für domain1.com
RewriteCond %{HTTP_HOST} domain1.com$ [NC]
RewriteCond %{REQUEST_URI} !^/domain1.com/?.*$
RewriteRule ^(.*)$ /domain1.com/$1 [L]

#Eintrag für domain2.de
RewriteCond %{HTTP_HOST} domain2.de$ [NC]
RewriteCond %{REQUEST_URI} !^/domain2.de/?.*$
RewriteRule ^(.*)$ /domain2.de/$1 [L]

In der Zeile 1 schalten wir mittels “RewriteEngine On” das mod_rewrite Modul vom Apache Webserver ein. Dieses Modul ist primär für das Umschreiben von URL’s zuständig. Danach folgen die RewriteRules für unsere Domains. In der Zeile 4 und 5 haben wir Rewrite Coditions erstellt. Das Umschreiben der URL’s erfolgt also nur, wenn die Condtions (Bedingungen) erfüllt sind. In der Zeile 4 sagen wir quasi “Wenn die aufgerufene Domain domain1.com ist, dann gehe zur nächsten Rewrite Codition, also Zeile 5. Schau ob diese zutrifft und schreibe dann die URL’s um”. Die Zeile 6 macht im Prinzip nichts anderes, als alle Anfragen in den Unterordner “domain1.com” umzuleiten. Bei den Rewrite Conditions ist die Zeile 5 sehr wichtig, da wir ansonsten eine Endlosschleife beim Umschreiben erzeugen würden!

Der Eitrag für die “domain2.de” ist der Selbe wie für die domain1.com (bis auf die Domain ;-) ).

Möchte man generell diese Technik zum Hosten von mehereren Webseiten auf einem Webspace anwenden, so könnte man auch folgendes in die .htaccess Datei eintragen:

RewriteEngine On

#Alle www. Subdomains auf die Domain ohne www. umleiten
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

#Rewrite Rules für die Webseiten
RewriteCond %{HTTP_HOST} (.*)$ [NC]
RewriteCond %{REQUEST_URI} !^/%1/?.*$
RewriteRule ^(.*)$ /%1/$1 [L]

Das Prinzip ist hier das Selbe wie im ersten Beispiel, außer dass wir hier Backreferences verwenden, und dass wir die Domains auf die Haupdomain (also ohne www.) weiterleiten. Wenn wir hier eine neue Webseite erstellen, so müssen wir nur mehr das Unterverzeichnis für die Domain erstellen.

Mai 16, 2010 Gepostet unter Apache Webserver