.htaccess: 3 externe Domains, 3 Websites in 3 Serverpfaden.

Wie wir alle wissen (sollten) ändert mod_rewrite keine Links im Script. Damit auch die Links auf Deiner Page auf die neuen "Rewrited URLs" zeigen bedarf es der Anpassung im Code. Fragen und Probleme rund um's Coding werden hier diskutiert.

Moderator: Super-Mod

.htaccess: 3 externe Domains, 3 Websites in 3 Serverpfaden.

Beitragvon joe_rooster » 27.11.2008 20:54

Hallo,

das Hosting mehrerer externer Domains auf einem Webserver macht mir zu schaffen. Folgendes Szenario ist (leider) gegeben:

* 1 "Managed Server" bei 1und1 (das heißt, ich kann das Problem nicht per VHost-Eintrag in einer httpd.conf lösen)
* 3 unabhängige Websites in 3 Pfaden auf diesem Server
* 3 externe Domains (nicht bei 1und1 gehostet) die per A-Record-Änderung direkt auf die IP und damit auf das Webroot-Verzeichnis des Servers geleitet werden


Nun sollen mittels einer .htaccess-Datei, die sich im Webroot ("/") des Servers befindet, die 3 Domains jeweils auf einen anderen Server-Pfad/ -Ordner umgeleitet werden, in welchen sich die Website-Dateien (PHP) befinden:

www.domain1.de -> /domain1.de/www/
www.domain2.de -> /domain2.de/www/
www.domain3.de -> /domain3.de/www/

Dies erledige ich in der zentralen .htaccess-Datei wie folgt:

######################################
# .htaccess im Webroot-Verzeichnis des Servers

RewriteEngine On
RewriteBase /

# Domain 1
# Umleiten, wenn nicht "www"
RewriteCond %{HTTP_HOST} ^domain1\.de
RewriteRule (.*) http://www.domain1.de/$1 [R=301]

# Dann immer auf Webspace umleiten
RewriteCond %{HTTP_HOST} ^www\.domain1\.de
RewriteRule (.*) /domain1/www/$1

# Domain 2
# Umleiten, wenn nicht "www"
RewriteCond %{HTTP_HOST} ^domain2\.de
RewriteRule (.*) http://www.domain2.de/$1 [R=301]

# Dann immer auf Webspace umleiten
RewriteCond %{HTTP_HOST} ^www\.domain2\.de
RewriteRule (.*) /domain2/www/$1

# ...
######################################

Bis dahin klappt es. In den Website-Verzeichnissen ist nocheinmal eine .htaccess-Datei, die kanonische URLs für das verwendete CMS erzeugt.

Problem ist nun aber, dass die URLs im Browser zwar richtig angezeigt werden ("http://www.domain1.de/de/9/Ueber-uns.html"), in den PHP-Skripten aber nicht der per .htaccess "erzeugte" Webroot der Webroot ist, sondern der eigentliche Server-Webroot.

Das führt dann dazu, dass z.B. ein PHP-Skript, welches eine PHP-Klassendatei in der (umgeschriebenen) Seite "http://www.domain1.de/de/9/Ueber-uns.html" mit dem Pfad:

PHP-Code:
include ('../../classes/class_database.php'); // Sollte den Root der Domain treffen

nicht findet, da PHP wiederum vom Server-Webroot ausgeht (!?), also nicht unter "/domain1/www/classes/" sucht (wo die Datei liegt), sondern unter "/classes/". Ist das richtig? Zumindest erscheint immer eine Fehlermeldung, dass die Include-Datei nicht gefunden werden konnte.
Ohne mod_rewrite, wenn man also die Website über den direkten Server-Pfad aufruft, findet PHP die relativ addressierte Include-Datei:

http://123.123.123.123/domain1/www/index.php
findet

PHP-Code:
include ('classes/class_database.php');

Gibt es hier eine Lösung innerhalb meiner .htaccess-Dateien oder auch eine andere Lösung, die sich auf so einem Managed Server, der leider nur beschränkte Admin-Möglichkeiten bietet, lösen?

TIA schonmal und schöne Grüße, Joe [/code]
joe_rooster
.
.
 
Beiträge: 2
Registriert: 27.11.2008 20:47

Beitragvon Gumbo » 28.11.2008 10:23

Was du möchtest ist mit mod_rewrite nicht möglich. Aber wieso ist es nicht möglich, für die drei „externen“ Domains zusätzliche virtuelle Hosts einzurichten?
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon joe_rooster » 28.11.2008 10:45

Hi Markus,

sowas hatte ich schon befürchtet. Ich kann leider keine VHosts einrichten, da der Server einen Zugriff/ die Bearbeitung der httpd.con nicht erlaubt. Das ist so ein Managed Server bei 1und1, welcher eigentlich ein besserer/ größerer Webspace ist.
Ich habe nun aber einen Workaround mit PHP gefunden, der zwar absolut nicht ideal ist, aber wenigstens funktioniert:

Bevor die erste Datei per Include eingebunden wird, wechsle ich in einer zentralen Config-Datei, die an den Anfang jeder Seite eingebunden wird, mit chdir('/domain1/www/'); das Verzeichnis. Anschließend funktionieren die PHP-Includes.

Habe auch noch was im Netz zu ner .htaccess-Funktion 'php_value auto_prepend_file "/home/www/datei.in"' gefunden (http://www.techsanctuary.com/modrewrite ... dnsvhost-h). Das hat aber leider nicht funktioniert.

Grüße, Joe
joe_rooster
.
.
 
Beiträge: 2
Registriert: 27.11.2008 20:47


Zurück zu Programmierung & Scriptanpassung für mod_rewrite

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron