Fehler bei URL Umschreibung mit 2 Parameter

Eines der wichtigsten Anwendungsgebiete von mod_rewrite ist das umschreiben von dynamischen in statische URLs um "suchmaschinenfreundliche URLs" zu erzeugen. Aber was ist besser fürs Ranking? http://www.url.com/12_2.htm, http://www.url.com/url,12,2.htm oder doch lieber http://www.url.com/12/2/url/ Fragen zum URL-Design werden hier diskutiert.

Moderator: Super-Mod

Fehler bei URL Umschreibung mit 2 Parameter

Beitragvon hmp » 23.07.2009 14:47

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?
hmp
.
.
 
Beiträge: 13
Registriert: 23.01.2008 15:04

Beitragvon Gumbo » 23.07.2009 17:16

Du verwendest auch dieselben Suchmuster. Wie sollte da unterschieden werden?
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon hmp » 24.07.2009 09:25

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 ^^
hmp
.
.
 
Beiträge: 13
Registriert: 23.01.2008 15:04

Beitragvon Gumbo » 24.07.2009 09:46

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.
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon hmp » 24.07.2009 11:32

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?
hmp
.
.
 
Beiträge: 13
Registriert: 23.01.2008 15:04


Zurück zu URL-Design

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron