.htacces & mod_rewrite

Alles, was den Apache betrifft, kann hier besprochen werden.

.htacces & mod_rewrite

Postby ERRoR2k » 02. March 2007 17:15

hallo leuts,

ich hab da mal wieder ne frage zu mod_rewrite...

geht sowas:

mod_rewrite soll aus www.domain.de/en/datei.php?var1=inhalt1 das machen: www.domain.de/v6/datei.php?var1=inhalt1&lang=en

wenn ja wie? *verzweifel* ;)

mfg dennis
ERRoR2k
 
Posts: 8
Joined: 17. November 2004 19:39

Postby KingCrunch » 02. March 2007 22:29

Öh, sollte eigentlich nich weiter schwierig sein

Code: Select all
RewriteRule ^([a-zA-Z]{2})/(.*\.php{1})(.*)$ v6/$2$3&lang=$1
Ist jetzt ungeprüft und zumindest wie folgt gemeint:

1. Suche zwei Buchstaben
2. Dann Schrägstrich
3. Dann einen Dateinamen, der auf php endet
4. Danach alles, was dahinter steht

Daraus soll werden
1. v6/
2. Danach der Dateiname
3. Danach das hinter dem Dateinamen
4. Dann &lang=
5. Dahinter dann die zwei gefundenen Buchstaben
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Wiedmann » 03. March 2007 15:49

KingCrunch wrote:
Code: Select all
RewriteRule ^([a-zA-Z]{2})/(.*\.php{1})(.*)$ v6/$2$3&lang=$1

Ist jetzt ungeprüft und zumindest wie folgt gemeint:

Dann prüfs mal ;-)

Da man in der RewriteRule-Directive nicht auf den QueryString matchen kann, kann das so nicht gehen. Ich schätze mal, dass ist das "Problem" was auch der OP hat...

Bekommst noch eine 2. Versuch zu lösen und weil ich grad eh zu faul zum denken bin *g*
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby KingCrunch » 03. March 2007 16:07

Öhm .... die RewriteRule match nicht auf den Querystring? Soweit ich das noch so im Kopf habe, wird die gesamte URL ab der RewriteBase gemacht, was ja die querystring einschließt ^^

Hast gewonnen:
Apache Manual wrote:The Pattern will not be matched against the query string. Instead, you must use a RewriteCond with the %{QUERY_STRING} variable. You can, however, create URLs in the substitution string, containing a query string part. Simply use a question mark inside the substitution string, to indicate that the following text should be re-injected into the query string. When you want to erase an existing query string, end the substitution string with just a question mark. To combine a new query string with an old one, use the [QSA] flag.

Apache: mod_rewrite - RewriteRule

Insofern zweiter (ungeprüfter) Versuch:
Code: Select all
RewriteRule ^/([a-zA-Z]{2})/(.*\.php)$ /v6/$2?lang=$1 [QSA]

Sind die Quantoren in der Form eigentlich möglich? Im Manual sind nur die grafischen (*+?) angegeben, bin mir also unsicher, ob die explizite Angabe ({x,y}) überhaupt möglich sind ^^
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby ERRoR2k » 30. May 2007 23:43

ich hab es jetzt zwar für jede sprache einzeln definiert, aber egal, funzt so... die 2 zeilen für jede sprachen hinzufügen macht den bär nicht dicke ;)

Code: Select all

# Für PHP Dateien die Variable lang & Querystringmit übergeben
RewriteRule ^en/(.*\.php)$ /v6/$1?lang=en& [QSA]
# Für alle anderen nix, ausser evtl. den Query String
RewriteRule ^en/(.*)$ /test/go/$1? [QSA]

RewriteRule ^de/(.*\.php)$ /v6/$1?lang=de& [QSA]
RewriteRule ^de/(.*)$ /test/go/$1? [QSA]

RewriteRule ^cz/(.*\.php)$ /v6/$1?lang=cz& [QSA]
RewriteRule ^cz/(.*)$ /test/go/$1? [QSA]



sau geil :D

jetzt macht er
-> www.domain/de/verz1/test.php?var1=hallo
zu
www.domain.de/v6/verz1/test.php?lang=de&var1=hallo
ERRoR2k
 
Posts: 8
Joined: 17. November 2004 19:39


Return to Apache

Who is online

Users browsing this forum: No registered users and 2 guests