2 правило перезаписывания URL для 1 динамической страницы
-
27-10-2019 - |
Вопрос
У меня есть динамическая страница под названием Show.php. Страница динамична, и URL может быть либо show.php?name=john-doe
или же show.php?category=student
.
Я пытаюсь создать правило переписывания, которое превращает URL в /show/john-doe.html
для имен или /show/student.html
для категории.
Это то, что у меня есть в своем .htaccess до сих пор.
RewriteRule ^show/([^/]*)\.html$ show.php?name=$1 [L]
RewriteRule ^show/([^/]*)\.html$ show.php?category=$1 [L]
В настоящее время только правило имени работает, но правило категории нет. Что случилось?
Решение
Проблема в том, что вы отправляете все Show/xxx.html в один и тот же URL (первый). Поскольку оба правила переписывания используют точно одинаковый параметр, только первый будет работать.
Вы можете решить это двумя разными способами.
Либо вы используете show.php? Id = xxx и принимаете и имя, и категорию в своем PHP и Detirmine там, какая страница можно показать.
Или вы используете два разных типа URL-адресов в своем перезаписи, чтобы получить Show/Category/Student.html и Show/Student/John-Doe.html как SO:
RewriteRule ^show/student/([^/]*)\.html$ show.php?name=$1 [L]
RewriteRule ^show/category/([^/]*)\.html$ show.php?category=$1 [L]