2 URL -Umschreibenregel für 1 dynamische Seite
-
27-10-2019 - |
Frage
Ich habe eine dynamische Seite namens show.php. Die Seite ist dynamisch und die URL kann entweder sein show.php?name=john-doe
oder show.php?category=student
.
Ich versuche, eine Umschreibung zu erstellen, die die URL in die URL verwandelt /show/john-doe.html
für Namen oder /show/student.html
Für Kategorie.
Das habe ich bisher in meinem .htaccess.
RewriteRule ^show/([^/]*)\.html$ show.php?name=$1 [L]
RewriteRule ^show/([^/]*)\.html$ show.php?category=$1 [L]
Derzeit funktioniert nur die Namensregel, die Kategorieregel jedoch nicht. Was ist los?
Lösung
Das Problem ist, dass Sie alle Shows/xxx.html an dieselbe URL (die erste) senden. Da beide Umschreibregeln genau denselben Parameter verwenden, funktioniert nur der erste.
Sie könnten dies auf zwei verschiedene Arten lösen.
Entweder verwenden Sie show.php? Id = xxx und akzeptieren sowohl Namen als auch Kategorie in Ihrem PHP und vermitteln dort, welche Seite zu zeigen ist.
Oder Sie verwenden zwei verschiedene Arten von URLs in Ihrem Umschreiben, um Show/Kategorie/student.html und show/student/John-doe.html wie SO zu erhalten:
RewriteRule ^show/student/([^/]*)\.html$ show.php?name=$1 [L]
RewriteRule ^show/category/([^/]*)\.html$ show.php?category=$1 [L]