Zur Navigation

.htaccess Domains umleiten

Drei Domains, drei Ordner

1 KalleG

Hallo zusammen,

von meinem Host fühle ich mich im Moment ein wenig alleine gelassen und bei meiner Suche im Web bin ich auf dieses Forum gestossen. Leider reichen meine Kenntnisse nicht aus, um wirklich alles richtig zu verstehen und hoffe daher auf eine helfende Hand.

Folgende Situation liegt vor. In dem Root unseres Servers liegen drei Unterordner, so das dieser wie folgt aussieht:

\
\_eng
\_ger
\_test

Wir haben drei Domains, welche wie folgt aussehen:

www.deutsch.de
www.englisch.com
test.deutsch.de

Wir möchten nun die aufgerufenen Domains in die entsprechenden Ordner leiten, sprich

*.com in _eng
*.de in _ger
test.*.de in _test

Die Subdomain soll uns später als Testumgebung dienen. In jedem Ordner liegt ein aktuelles Wordpress, welches jeweils separat gepflegt wird.

Meine bisherige .htaccess liegt natürlich im Root und sieht bisher wie folgt aus:

RewriteEngine on

#deutsch.de
RewriteCond %{HTTP_HOST} ^(www\.)?deutsch\.de
RewriteRule ^(.*)$ _ger/$1

#englisch.com
RewriteCond %{HTTP_HOST} ^(www\.)?englisch\.com
RewriteRule ^(.*)$ _eng/$1

#test.deutsch.de
RewriteCond %{HTTP_HOST} ^(www\.)?test\.deutsch\.de
RewriteRule ^(.*)$ _test/$1

Doch irgendwie möchte das absolut nicht funktionieren. Es wird mir ein Konfigurationsfehler angezeigt.

Könnte mir dabei jemand helfen und mir an dem gegebenen Beispiel zeigen, wie die .htaccess aussehen müsste. Eine Erklärung dazu wäre dann ganz nett, damit ich auch verstehe, was ich da überhaupt mache.

Meine bisherige Vermutung ist, das dort 'Flags' fehlen, doch wie gesagt, reicht mein Kenntnisstand dazu echt nicht aus. :( Ich bin kein Admin oder so, nur nen 0815 Anwender.

Für Hilfe wäre ich sehr dankbar.

MfG

Kalle

23.02.2012 17:44

2 Jörg

Doch irgendwie möchte das absolut nicht funktionieren. Es wird mir ein Konfigurationsfehler angezeigt.

Wie ist denn der genaue Wortlaut dieser Fehlermeldung?

Gibt es in den genannten Unterordnern auch htaccess Dateien mit RewriteRules?

Eine elegantere Methode wäre es übrigens, den Domains jeweils einen "realen" eigenen DocumentRoot-Ordner zuzuweisen. Viele Webhoster stellen so eine Konfigurationsmöglichkeit im Adminpanel bereit. Das hat dann z.B. den Vorteil, dass mod_rewrite Rules in verschiedenen Verzeichnisebenen sich nicht gegenseitig in die Quere kommen.

23.02.2012 18:55 | geändert: 23.02.2012 18:56

3 KalleG

Hallo und Danke für die Rückantwort...

zunächst zu dem Host. Diesen haben wir von einem Bekannten übernommen, doch irgendwie scheint der sehr benutzerunfreundlich zu sein. Es gibt für uns keine Möglichkeit der Konfiguration, wie z.B. über Confixx. Wir haben den Host gebeten, die Domains doch bitte wie gewünscht umzuleiten und uns einen Zugang in Form von phpMyAdmin zu den Datenbanken zu geben. Die Rückantwort darauf ist gewesen, das wir die Umleitungen in der .htaccess vornehmen können und Wordpress damit auch klarkommen würde. Dadurch können wir nun leider noch nicht die Datenbank bearbeiten, was aufgrund der Pfadangaben von WP ja nötig und sinnig ist. Doch das wird sich sicher noch klären.

Aus diesem Grund setze ich mich grad mit der Umleitung via .htaccess auseinander und Scheiter dort leider kläglich. Das Thema und die Möglichkeiten finde ich interessant und nehme dieses Beispiel zum Anlass, mich damit auseinander zu setzen.

In den genannten Ordnern ist ebenfalls eine .htaccess mit RewriteRules und zwar befinden sich dort die von Wortpress selbst hinterlegten Einstellungen, welche wie folgt aussehen:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Diese .htaccess findet sich in jedem der drei Ordner.

Ist die von mir angelegte .htaccess denn generell so richtig?

23.02.2012 20:05 | geändert: 23.02.2012 20:05

4 Jörg

Offensichtliche Fehler habe ich nicht entdecken können; deswegen auch meine Frage nach dem genauen Wortlaut der Fehlermeldung - daraus könnte man eventuell schlussfolgern, warum die Umleitungen hier nicht funktionieren.

23.02.2012 21:27

5 KalleG

Sorry, das Wichtigste habe ich vergessen. ;) Im Browser wird mir der folgende Fehler angezeigt:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, admin@-----.de and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Dem Logfile des Servers kann ich diese Fehlermeldung entnehmen:

[Fri Feb 24 06:45:34 2012] [error] [client xxx.xxx.xxx.xxx] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

Mehr bekomme ich an Fehlermeldungen nicht.

24.02.2012 06:51

6 KalleG

Nochmal schnell nachgeschoben... ich habe mal nach der Fehlermeldung aus dem Log Google befragt und eine mögliche Lösung gefunden. Nach dieser Lösung, sieht die .htaccess nun wie folgt aus:

RewriteEngine on

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]

#tuecking.de
RewriteCond %{HTTP_HOST} ^(www\.)?deutsch\.de
RewriteRule ^(.*)$ _ger/$1

#tuecking.com
RewriteCond %{HTTP_HOST} ^(www\.)?englisch\.com
RewriteRule ^(.*)$ _eng/$1

#test.tuecking.de
RewriteCond %{HTTP_HOST} ^(www\.)?test\.deutsch\.de
RewriteRule ^(.*)$ _eng/$1

Damit wirft mir der Browser keine direkte Fehlermeldung mehr aus und ich kann die Seite aufrufen. Doch sobald ich einen Link in dem Wordpress-Blog anklicke, bekomme ich dann z.B. folgendes angezeigt:

Not Found

The requested URL /_ger/projekte/projektliste was not found on this server.

Er setzt nun also das " /_ger/" in die URL und somit kann er natürlich die Seiten nicht finden, obwohl in der Adresszeile des Browsers "http://www.deutsch.de/projekte/projektliste" steht. Gibt es dazu eine Lösung?

24.02.2012 07:00 | geändert: 24.02.2012 07:01

7 Jörg

Es ist vermutlich so, dass Wordpress intern PATH_INFO auswertet, der Inhalt dieses Parameters aber durch die RewriteRules im Rootverzeichnis geändert wurde.

Wie verhält sich Wordpress denn, wenn du die RewriteBase entsprechend anpasst:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /_ger/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

24.02.2012 08:28

1 Forenmitglied fand diesen Beitrag gut

8 KalleG

Das hat schonmal geholfen, thx! Jetzt kann ich zumindest deutsch.de und englisch.com aufrufen. Einziges Problem ist jetzt noch die Subdomain Test.deutsch.de, denn diese möchte er nicht aufrufen. Nach erneuter Befragung von Google, sieht der Part für die Subdomain in der .htaccess nun so aus:

RewriteCond %{HTTP_HOST} ^(test\.)?deutsch\.de
RewriteCond %{REQUEST_URI} !/_test/
RewriteRule ^(.*)$ _test/$1

Leider funktioniert das nicht.

EDIT

Auch diesen Ansatz habe ich versucht, leider ohne Erfolg:

RewriteCond %{HTTP_HOST} ^test\.
RewriteCond %{REQUEST_URI} !^/_test/$ [NC]
RewriteRule (.*) /_test/$1 [L]

24.02.2012 09:43 | geändert: 24.02.2012 09:53

9 Jörg

Einziges Problem ist jetzt noch die Subdomain Test.deutsch.de, denn diese möchte er nicht aufrufen.

Wie äußert sich das? Werden Fehlermeldungen angezeigt oder andere Inhalte als erwartet?

RewriteCond %{HTTP_HOST} ^(test\.)?deutsch\.de

Der Ausdruck "^(test\.)?deutsch\.de" trifft auch auf die Domain deutsch.de zu

24.02.2012 10:07

10 KalleG

Also aktuell sieht die .htaccess für diesen Teil noch so aus:

RewriteCond %{HTTP_HOST} ^(test\.)?deutsch\.de
RewriteCond %{REQUEST_URI} !/_test/
RewriteRule ^(.*)$ _test/$1

Beim Aufruf der Domain werde ich von der T-Online Navigationshilfe abgefangen. Der Link dazu in der Browserzeile sieht so aus:

http://navigationshilfe1.t-online.de/dnserror?url=http://test.deutsch.de/

Der Fehler im Logfile sieht wie folgt aus:

[Fri Feb 24 09:48:51 2012] [alert] [client xxx.xxx.xxx.xxx] /var/www/deutsch.de/htdocs/.htaccess: RewriteCond: bad flag delimiters

24.02.2012 18:37 | geändert: 24.02.2012 18:52