[Gelöst] RewriteEngine

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

[Gelöst] RewriteEngine

Postby Origami » 21. April 2006 10:12

Guten Tag,

ich habe ein kleines Problem mit der RewriteEngine Option.
Das Problem besteht darin, dass ich in einem Link keine Variablen uebergeben kann, weil sie, wie ich denke von der RewriteEngine nicht an das naechste Script uebergeben werden:

Beispiel:
der Link[1]:
Code: Select all
<a href='?viewdetails=1'>

Der Code (PHP) der das ganze empfangen soll: (die gleiche seite)
Code: Select all
$_view_details=$_REQUEST["viewdetails"];

Problem ist die variable $_view_details bleibt nach Klicken des Links immer leer!
die urspruengliche URL der Seite der den <a href > beinhaltet sieht ungefaehr so aus:
http://testdomain.de/de/xk/usedcars

die URL nach klicken des links [1]:
http://testdomain.de/de/xk/usedcars?viewdetails=1

der Inhalt der .htaccess:
Code: Select all
RewriteEngine on
# Aufrufe der Untermenüs pro Typ
RewriteRule (de|en|fr|it|pl|ru)/(xtype|stype|xj|xk|oldt)/(newcars|usedcars|configuration|data|gallery|news)/?$ index.php?lang=$1&cartype=$2&view=$3 [L]


ich schätze es liegt irgendwie an der RewriteRule, muss ich noch etwas anhaengen damit das viewdetails ordentlich zu parsen ist und an die naechste seite uebergeben wird?

vielen dank fuer die hilfe
josh
Last edited by Origami on 23. April 2006 19:00, edited 1 time in total.
Origami
 
Posts: 3
Joined: 21. April 2006 09:04

Postby KingCrunch » 21. April 2006 11:53

Du definierst ja auch keine GET-Variable "viewdetails", ich seh da nur "lang", "cartype" und "view"....

----

OK, seh scho... Also dein Problem ist, dass dein regulärer Ausdruck nicht berücksichtig, ob nach dem letzten (anscheinend optionalen) Slash noch etwas folgt. Wundert mich ein Stück, dass es mit dem Aufruf http://testdomain.de/de/xk/usedcars?viewdetails=1 überhaupt etwas tut, denn das $ am Ende des Suchkette sagt eigentlich, dass er bis zum Ende der Zeichenkette suchen soll. Damit würde er versuchen "usedcars?viewdetails=1" mit "(newcars|usedcars|configuration|data|gallery|news)" zu vergleichen, was nich passt... Ein Vorschlag (ohne Gewähr)
Code: Select all
RewriteEngine on
# Aufrufe der Untermenüs pro Typ
RewriteRule (de|en|fr|it|pl|ru)/(xtype|stype|xj|xk|oldt)/(newcars|usedcars|configuration|data|gallery|news)/?(\?(.*))?$ index.php?lang=$1&cartype=$2&view=$3&$5 [L]

Die Idee dahinter: Wenn ein Fragezeichen auftritt, soll er alles, was danach kommt einfach noch an die Argumentliste anhängen. Ob es so funktioniert, weiß ich nicht genau, das war grad ma so aussm Kopp hinetippt.
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Wiedmann » 21. April 2006 12:54

IMHO müsste die Rule so aussehen:
Code: Select all
RewriteRule ^(de|en|fr|it|pl|ru)/(xtype|stype|xj|xk|oldt)/(newcars|usedcars|configuration|data|gallery|news)$ index.php?lang=$1&cartype=$2&view=$3 [QSA,L]
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby KingCrunch » 21. April 2006 13:37

Wieder was dazu gelernt... Aber eine Frage hab ich dazu dann jetzt doch: Organisiert sich das Flag "QSA" selbst mit den "&" und dem "?" oder kann es dann passieren, dass zwei "?" auftauchen?
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Wiedmann » 21. April 2006 13:44

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html wrote:Note: Query String
The Pattern will not be matched against the query string. To do this, 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 new and old query strings, use the [QSA] flag.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby KingCrunch » 21. April 2006 14:09

rtfm, i understand :oops:
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

ich hasse es das sagen zu muessen

Postby Origami » 23. April 2006 18:07

hey, erst einmal vielen dank fuer euere Tips!

es will aber irgendwie nicht funktionieren.
Code: Select all
RewriteRule ^(de|en|fr|it|pl|ru)/(xtype|stype|xj|xk|oldt)/(newcars|usedcars|configuration|data|gallery|news)$ index.php?lang=$1&cartype=$2&view=$3 [L,QSA]
oder
Code: Select all
#RewriteRule (de|en|fr|it|pl|ru)/(xtype|stype|xj|xk|oldt)/(newcars|usedcars|configuration|data|gallery|news)/?(\?(.*))?$ index.php?lang=$1&cartype=$2&view=$3&$5 [L]


beide Beispiele bringen nicht das gewuenschte Ergebnis!
Code: Select all
_SERVER["QUERY_STRING"]   lang=de&cartype=xj&view=usedcars
_SERVER["REQUEST_URI"]   /modules/de/xj/usedcars?viewdetails=1


aber fuer den Request sind nur die Variablen:
Code: Select all
_REQUEST["lang"]   de
_REQUEST["cartype"]   xj
_REQUEST["view"]   usedcars
_REQUEST["PHPSESSID"]   xxxxxxxx
_REQUEST["author"]   xxx xxxx
gesetzt.

kann es sein das das daran liegt:
Code: Select all
_ENV["_"]   /usr/sbin/apache2


das haette ich wohl mal ein wenig frueher sagen sollen. Das mit der option QSA verstehe ich so, das alles was nicht geparsed wird und hinter dem Fragezeichen steht einfach durchgereicht wird, richtig?

sorry und danke
josh
Origami
 
Posts: 3
Joined: 21. April 2006 09:04

Postby Origami » 23. April 2006 18:48

alles zurueck, ich habe herausgefunden was das problem war!

eine ebene hoeher lag noch eine .htaccess
diese ueberschrieb meine persoenlichen einstellungen in der 2. ebene.

vielen dank fuer euere Geduld!

josh
1. edit
hm. irgendwas klappt noch nicht, ich gebe den thread sofort als geloest bekannt, wenn ich das testen konnte....

2. edit
ok. es lag einfach daran das der eintrag in der darunterliegenden ebene den in der naechsten ueberlagerte!
Origami
 
Posts: 3
Joined: 21. April 2006 09:04


Return to Apache

Who is online

Users browsing this forum: No registered users and 8 guests