2 правило перезаписывания URL для 1 динамической страницы

StackOverflow https://stackoverflow.com/questions/4836236

  •  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]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top