Seite 1 von 1

Braucht bitte Hilfe beim Rewrite eines Unterordners!

Verfasst: 13.04.2011, 13:04
von Waterkanter
Ich habe folgendes Problem

Ich hab einen kleinen Shop, der Deutsch und Englisch als Spache hat.

Ich will die Sprache nun über HTACCESS steuern und zwar nach folgendem Muster:

www.example.com/shop/de/(beliebige weiterer Verzeichnisse)
soll zu
www.example.com/shop/(beliebige weiterer Verzeichnisse)
werden.
Also im Prinzip das "de" nur intern rausnehmen, soll aber natürlich angezeigt bleiben.

Ich hab schon viele Varianten die ich hier gefunden hab probiert, aber scheinbar bin ich schlicht zu blöd dafür!

folgendes hab ich derzeit probiert:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^www.domain.de/shop/de/*$
RewriteRule (.*) https://www.domain.de/shop/*$1 [R=301,L]

klappt aber nicht, weil das ganz sicher so nicht stimmt...

Ich bitte um Hilfe!

Verfasst:
von

Verfasst: 13.04.2011, 13:16
von chris21
Moin Waterkanter,

wenn ich Dich richtig verstanden habe, soll das de in der URL bestehen bleiben.

Da aber unter de keine Dateien zu finden sind, sollen diese intern aus /shop/.. gezogen werden.

Dann machst Du einfach folgendes:

Code: Alles auswählen

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/shop/de/(.*)$
RewriteRule ^(.*)$ /shop/$1 
Wichtig: hier dürfen keine Hosts auftauchen und kein R=301 flag, sonst würdest du keinen internen, sondern einen externen Rewrite machen, wodurch dann das /de/ aus der URL verschwinden würde. Und das willst Du ja nicht.

Verfasst: 13.04.2011, 13:25
von Waterkanter
Danke für die schnelle Antwort!

Klappt aber leider so nicht :(
Ich sollte dazu sagen, dass es den Ordner /de/ und /en/ nicht gibt. Die Dateien (.php) liegen im Ordner /shop/
Es soll aber in der URL stehen /shop/de/datei.php und auf /shop/datei.php verweisen. Das gleiche mit /en/. Beide (de und en) sollen auf die gleichen dateien verweisen, die dann das "de" und das "en" aus der URI auslesen und so die Sprache steuern.

Verfasst: 13.04.2011, 13:34
von chris21
Da gibt es zwei Probleme, die unterschiedlich behandelt werden müssen:

a) Wie sind die Dateien verlinkt auf der Seite? Sie müssen auf shop/de/... oder /shop/en/... verlinkt werden.

b) wie soll die sprache ausgelesen werden?

Eine Möglichkeit wäre z.B.:

Code: Alles auswählen

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/shop/(de|en)/(.*)$
RewriteRule ^(.*)$ /shop/$2?sprache=$1 
Dann würde der Aufruf von /shop/de/beispiel.php intern so ankommen:

/shop/beispiel.php?sprache=de

Dann wäre z.B. für php im $_GET['sprache'] die Sprache (de oder en) als Variable zu finden.

Verfasst: 14.04.2011, 11:23
von Waterkanter
Super, das klappt soweit schonmal :))
Nur wird die sprache nicht korrekt übergeben sondern in ['sprache'] steht der ganze pfad drin "shop/de/datei.php". Aber das macht nix, ich lese die Sprache eh über die URI aus, das passt dann schon :)

Vielen Dank, hast mir sehr geholfen! :))