mod_rewrite
betrachtet jede Regel nacheinander, bis sie eine übereinstimmende gefunden hat.
Nehmen Sie zum Beispiel http://example.com/jenifer
, wobei die Anforderung für jenifer
mit dem ersten Regelmuster ^([^/]*)$
verglichen wird. Und schauen Sie sich http://example.com/dance
an, hier wird wiederum dance
gegen das erste Regelmuster ^([^/]*)$
abgeglichen. Die zweite Regel wird nie probiert, weil die erste bereits jede Anfrage verschluckt.
Wenn Sie eine Anfrage haben, die dem Muster entspricht, wird Apache immer bei der ersten RewriteRule
stoppen, weil dies die erste passende ist.
Wenn Sie zwischen den Teammitgliedern und Kurse unterscheiden wollen, müssen Sie auch unterschiedliche Muster gegen anzupassen, wie @anubhava bereits in den Kommentaren vorgeschlagen, z.B.
RewriteRule ^team/([^/]*)$ /team.php?PAGE=profile&LINK=$1 [L]
RewriteRule ^course/([^/]*)$ /course.php?PAGE=view&LINK=$1 [L]
Wenn Sie jetzt eine Anfrage für http://example.com/team/jenifer
oder http://example.com/course/dance
bekommen, ist Apache der Lage, die richtige Regel auszuwählen, da der führenden team
oder course
in den Anforderungen.
Das kann nicht funktionieren. Pretty URL-Schema sollte auch eine Kennung für PHP-Handler haben. Etwas wie "http: // example.com/team/jenifer" und "http: // example.com/course/dance" wäre besser. – anubhava
Auch wenn die erste Seite funktioniert, wenn ich die zweite Regel entferne? Weil es funktioniert. – Adrian
Eine einzelne Regel als 'RewriteRule^([\ w -] +) /? $ /team.php?PAGE=profile&LINK=$1 [L, QSA]' zu behalten funktioniert, aber sie kann nicht für beide Regeln funktionieren, da das Muster gleich ist . – anubhava