Seite 1 von 1

Fehler bei URL Umschreibung mit 2 Parameter

Verfasst: 23.07.2009 14:47
von hmp
Hallo,

meine .htaccess Datei schaut folgendermaßen aus:

Code: Alles auswählen

RewriteEngine on
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)?$ index.php?c=$1&show=$2&jobid=$3
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)?$ index.php?c=$1&show=$2&jobid=$3&appid=$4
RewriteRule ^([^/\.]+)?$ index.php?c=$1
RewriteRule ^([^/\.]+)/([^/\.]+)?$ index.php?c=$1&show=$2
RewriteRule ^([^/\.]+)/([^/\.]+)?$ index.php?c=$1&do=$2
RewriteRule ^([^/\.]+)/([^/\.]+)?$ index.php?c=$1&query=$2


Nun alle Verweisungen mit dem Parameter "&show" funktionieren. Bei den Parametern "&do" und "&query" zeigt er die Seite zwar an, aber nicht den richtigen Inhalt. Laut meines Scripts wird nicht der richtige Inhalt mit dem Formular z.B. angezeigt sondern immer die "else" Bedingungen als würde es "http://www.meineseite.de/inserate/bearbeiten/4" (die richtige URL ist: http://www.meineseite.de/index.php?c=in ... en&jobid=4" nicht geben, aber es gibt sie ja! x_X

Kann mir da wer helfen?

Verfasst: 23.07.2009 17:16
von Gumbo
Du verwendest auch dieselben Suchmuster. Wie sollte da unterschieden werden?

Verfasst: 24.07.2009 09:25
von hmp
Müsste ich daher bei den anderen Suchmustern schon einen absoluten Namen angeben? z.B.

...für index.php?c=profil&do=bearbeiten

Code: Alles auswählen

RewriteRule ^profil/([^/\.]+)?$ index.php?c=profil&do=$1 


...für index.php?c=profil&show=bearbeiten

Code: Alles auswählen

RewriteRule ^profil/([^/\.]+)?$ index.php?c=profil&show=$1 


Aber das scheint mir irgendwie nicht richtig ^^

Verfasst: 24.07.2009 09:46
von Gumbo
Du scheinst die Arbeitsweise von mod_rewrite misszuverstehen. mod_rewrite verarbeitet an den Server gerichtet Anfragen. Dabei wird das Suchmuster auf den URL-Pfad angewendet. Und sobald es eine Übereinstimmung gibt, wird die Regel angewendet, das heißt der Ersatz ersetzt die aktuelle URL.
Wenn also „/profil/foobar“ angefragt wird, wird dies mit den Suchmustern der Regeln verglichen bis schließlich mit „^([^/\.]+)/([^/\.]+)?$“ eine Übereinstimmung gefunden wird und „/profil/foobar“ mit dem Ersatz „/index.php?c=profil&show=foobar“ ersetzt wird. Die anderen beiden Regeln mit demselben Suchmuster werden gar nicht mehr erreicht, da bereits die erste dieser Regel die URL umschreibt.

Verfasst: 24.07.2009 11:32
von hmp
Hm... und wie löse ich nun mein Problem :(? Weil dann müsste ich ja nun verschiedene URL-Designs verweden.

Daher obwohl http://www.meinseite.de/index.php?c=pro ... bearbeiten so ausschauen sollte:
http://www.meineseite.de/profil/bearbeiten

muss ich die nun z.B. so designen http://www.meineseite.de/profil/do/bearbeiten damit diese sich nicht mit "&show" versteht?