Virtuelles Sprachverzeichnis durch htaccess

Hallo, guten Morgen Leute!

Seit längerem suche ich nach einer Lösung für folgendes Problem:

Ich habe ein phpBB-Board, das verfügt über mehrere Sprachpakete.
Durch eine Modifikation in der session.php ist es möglich durch den Parameter in der Url lang=… für die jeweilige Seite die angegebene Sprache auszuwählen, sofern vorhanden.
/index.php?lang=en -> Englisches Sprachpaket wird für diese Seite verwendet.
/index.php?lang=de -> Deutsches(Du) Sprachpaket wird für diese Seite verwendet.
Eigentlich ganz simpel.
Mit dem Parameter von sessionlang=… wird diese Sprache für die aktuelle Session gespeichert.

Nun ich möchte mittels .htaccess folgendes bewerkstelligen:
Wenn ich nun auf meine-seite.de/de gehe, soll das deutsche Sprachpaket geladen werden.
Bei en eben English usw.

Also ich müsste irgendwie eine Weiterleitung oder was auch immer einrichten.
zB. so:
Ich habe im root-Verzeichnis einen Odner forum, darin liegen die phpBB-Files. /forum soll aber nicht erreichbar sein oder man soll auf die Standartsprache /de weitergeleitet werden.

Müsste doch so schematisch funktionieren:
/(1)/(2) -> /forum/(2)…&lang=(1)
Zu beachten gilt die Verwendung von &lang= und ?lang=

Ich habe schon mit RewriteRule herumexperementiert, aber ich krieg es nicht hin.

habt ihr vielleicht eine Idee oder einen guten Ansatz?

Vielleicht hilft das ein wenig. Ich hab ein wenig am Code rumgefummelt um ihn für meine Seite anzupassen und er funktioniert wunderbar - modxcms.de/forum/comments.ph … ionID=1201

Habe dort nichts passendes gefunden. Meinst du etwa den Javascript-Code, also ne das muss schon über htaccess laufen, auch für Suchmaschinen.

Mit htaccess kenn ich mich net so aus… Vlt hilft ja diese Seite

.htaccess

RewriteEngine on
RewriteRule ^/([a-zA-Z]){0,2}/(.*)$ /forum/index.php?lang=$1%{QUERY_STRING}

Nur als Ansatz verstehen :wink: /([a-zA-Z]){0,2}/ soll für en bzw. de stehen und wird an lang= weitergeleitet. Das ^ markiert den Anfang und $ das Ende. %{QUERY_STRING} sollte dafür sorgen, dass die anderen Parameter ohne Probleme übergeben werden.

(.*) = beliebig viele Zeichen (auch keine)

MfG
myPages

Ganz so einfach ist es natürlich nicht^^.

modrewrite.de liefert ein paar gute Ansätze.
Stand erst kürzlich vor dem gleichen Problem.
Meine Lösung war wie folgt:

[code]RewriteRule ^de|en/[^/]+ - [S=2]

RewriteCond %{REQUEST_URI} !^/de/$
RewriteCond %{QUERY_STRING} !^lang=(de|en)&?(.)?
RewriteRule (.
) de/$1?%1%2 [R=301,S=1]

RewriteCond %{QUERY_STRING} !^lang=de|en$
RewriteCond %{THE_REQUEST} ?([^?]&)?lang=(de|en)&?([^\s])?
RewriteRule (.*) %2/$1?%1%3 [L,R=301]

RewriteRule ^(de|en)(.*) $2?lang=$1 [L,QSA][/code]

Hallo!

Ich habe mal einen Moment Zeit gefunden den Code zu testen.
Nun ja, scheint nur teilweise zu gehen.

…localost/de/ (geht)
…localhost/en/ (geht nicht)

Alles andere leitet mich auf …localhost/X:/Apache/htdocs/de/ um ??? (Aufs absolute Server-Verzeichnis)

Habt ihr eine Idee?

hi,

naja, vlt. hilft das:

.htaccess:

[code]RewriteEngine On

RewriteRule ^de/(.)$ forum/$1?lang=de [QSA]
RewriteRule ^en/(.
)$ forum/$1?lang=en [QSA]
RewriteRule ^forum/( .*) goto-de.php?loc=$1 [QSA]
[/code]

goto.php (im root)

[quote]<?php
header(“location: dein-localhost.domain/de/”. $_GET[“loc”]);
?>[/quote]

wird aber sehrwahrscheinlich nen Internal error geben, da ich bei den erstenbeiden Rew-rules etwas vergessen habe… :wink:
wahrscheinlich ein “[L]”…

kannst ja mal ausprobieren :wink:

mfg Joey

Hallo, ich nochmal.

Ehm nö, dein Script will igendwie nicht wirklich.

Hmm, gebe es da vielleicht noch die Möglichkeit, tatsächlich ein Ordner de und en zu erstellen und in diese beiden Ordner eine .htaccess zu legen, die dann auf /forum/… + lang=… verweist?