2017-05-24 5 views
0

Ich mag wie die für zwei Seiten-URL neu zu schreiben:Samen .htaccess Regeln funktionieren nicht

Original:

http://example.com/team.php?PAGE=profile&LINK=jenifer

http://example.com/course.php?PAGE=view&LINK=dance

Wunsch:

http://example.com/jenifer

http://example.com/dance

ich schon versucht, diese Regeln

RewriteRule ^([^/]*)$ /team.php?PAGE=profile&LINK=$1 [L] 

RewriteRule ^([^/]*)$ /course.php?PAGE=view&LINK=$1 [L] 

Ich weiß nicht, warum nur die erste Seite rewrited wird corectly und die zweite Seite als erste Seite zu rewrited.

Auch ist meine index.php

Vielen Dank an team.php umgeleitet!

+3

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

+0

Auch wenn die erste Seite funktioniert, wenn ich die zweite Regel entferne? Weil es funktioniert. – Adrian

+0

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

Antwort

0

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.

Verwandte Themen