mod_rewrite und $_GET

Identität

Erfahrenes Mitglied
Hallo,

ich kämpfe gerade mit dem mod_rewrite. Einiges geht schon, jedoch habe ich mit den GET von PHP noch Probleme.

Zuerst einmal die echte URL:
index.php?content=kategorien&id=bilder

So verlinke ich auf die URL:
<a href="kategorien/bilder/">Bilder</a>

Und so sieht die .htaccess Datei aus:

Code:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)/$ index.php?content=$1  [L]

RewriteRule ^kategorien/(.*)/$ index.php?content=kategorien&id=$1  [L]

Jetzt frage ich mit $_GET die Kategorie ab. Bei der echten URL wird folgendes richtig ausgegeben: bilder
Bei der neuen gibt $_GET['content'] das hier aus: kategorien/bilder

Könnt ihr mir sagen, wie ich das lösen kann? Das wäre echt sehr nett.
 
Hi, vertausch mal die Reihenfolge der beiden RewriteRules. Man sollte immer erst die speziellen Fälle, also hier Bilder und danach den allgemeinen Fall behandeln. Das Flag [L] bedeutet, das falls die Regel zutrifft, alle danach kommenden Regeln nicht mehr bearbeitet werden.
 
Du solltest besser das Suchmuster anpassen, da „.*“ eben auf alles (genauer: jede beliebige Zeichenkette beliebiger Länge) passt. Besser wäre hier nur „[^/]+“, dass eben nur auf Pfadsegmente zutrifft:
Code:
RewriteRule ^([^/]+)/$ index.php?content=$1  [L]
RewriteRule ^kategorien/([^/]+)/$ index.php?content=kategorien&id=$1  [L]
 
Zurück