Seite 1 von 1

mod_rewrite: Domain auf Ordner umbiegen

Verfasst: 13.10.2004, 14:24
von mcchaos
Hallo!

Ich würde gerne eine bestimmte Domain des Paketes auf einen Order "umbiegen".
Bsp:
www.domain.de/test.htm -> Es soll die Datei www.domain.de/ordner/test.htm dargestellt werden.

Ich habe (u.a.) versucht:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.domain\.de$ [NC]
RewriteRule (.*) /ordner/$1 [L]

... geht abber net (Apache sagt: Internal Server Error).
Hilfe!

Verfasst:
von

Verfasst: 13.10.2004, 15:56
von Michael
Habe es jetzt nicht extra getestet, aber etwa so sollte es gehen

RewriteCond %{REQUEST_URI} ^/([^.]*).html$
RewriteRule ^(.*) /ordner/%1.html [L]

Gruß
Michael

Verfasst: 14.10.2004, 00:00
von zebby
so funktioniert es sicher

RewriteCond %{HTTP_HOST} ^[a-z]+\.domain\.de$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^(.*)\.domain\.de ordner

Verfasst: 14.10.2004, 19:34
von Caterham
.. geht abber net (Apache sagt: Internal Server Error).
Weil du 'ne Schleife drinn' hast -> deine Regel wird auch dann wieder ausgeführt, wenn sie schon einmal ausfgeführt wurde.

Code: Alles auswählen

RewriteRule (.*) /ordner/$1 
ist ohne Ausschluss ist immer wahr.


hostest/routest du mehere Domains auf ein Verzeichnis? Sonst kannst du dir das nämlich mit dem HTTP Host sparen.

Code: Alles auswählen

RewriteEngine On
#fängt nicht mit ordner an und es folgen 0 oder beliebig viele Zeichen
RewriteRule !^ordner.*$ - [C]
#nur, wenn das von der Domain ist
RewriteCond %{HTTP_HOST} ^[a-z]*\.?domain\.de$ [NC]
#deine Regel, letzte Regel; wird nur ausgeführt, wenn RewriteRule !^.. von oben wahr ist (also ordner nicht angefordert)
RewriteRule (.*) /ordner/$1 [L]
per ^[a-z]*\.?domain\.de$ ist neben www.domain.de auch domain.de erfasst, lege dich aber auf eins fest: :arrow: Standard-Domain definieren

Die Regel von Michael funktioniert, wenn du folgendes notierst:

Code: Alles auswählen

#der Slash muss auch ausgeschlossen werden, sonst ist /ordner/test.html ebenfalls wahr
RewriteCond %{REQUEST_URI} ^/([^./]*)\.html$
RewriteRule ^(.*) /ordner/%1.html [L]
Achtung - bitte nicht verwechseln im per-dir rewriting (htaccess): Request URI mit führendem Slash, RewriteRule ^[...] ohne führenden Slash

Code: Alles auswählen

%{REQUEST_URI} ^/ordner/test\.html$
RewriteRule ^ordner/test\.html
#ABER NICHT
RewriteRule ^/ordner/test\.html
Gruß
Robert

Verfasst: 16.10.2004, 11:25
von mcchaos
Danke für die Antworten, habs hinbekommen!

Verfasst: 20.10.2004, 10:56
von Michael
Tatsache. Mein Regulärer Ausdruck kann nicht klappen.
Sorry.

Man sollte doch immer alles testen bevor man es weitergibt. :oops:

Verfasst: 20.10.2004, 11:05
von bull
Es handelt sich m.E. hier gar nicht um Umleiten bei Deiner ersten Fassung, da ein 200er wohl zurückgegeben wird. Schau mal Deinen HTTP-Header an mit SamSpade o.ä.

Code: Alles auswählen

RewriteEngine On
RewriteCond %{HTTP_HOST} \.domain\.de [NC]
RewriteCond %{REQUEST_URI} !ordner [NC]  # nur falls domain==zieldomain
RewriteRule (.*) http://zieldomain/ordner/$1 [R=301,L]
sollte aber eigentlich schon funktionieren.
Hinweis: Länderkennung nicht mit "$" terminieren, da bei optionaler Portangabe die Regel nicht greift.