2 Regla de reescritura de URL para 1 página dinámica
-
27-10-2019 - |
Pregunta
Tengo una página dinámica llamada show.php. La página es dinámica y la URL puede ser show.php?name=john-doe
o show.php?category=student
.
Estoy tratando de crear una regla de reescritura que convierta la URL en /show/john-doe.html
para nombres o /show/student.html
para categoría.
Esto es lo que tengo en mi .htaccess hasta ahora.
RewriteRule ^show/([^/]*)\.html$ show.php?name=$1 [L]
RewriteRule ^show/([^/]*)\.html$ show.php?category=$1 [L]
Actualmente, solo la regla de nombre funciona, pero la regla de categoría no. ¿Qué ocurre?
Solución
El problema es que está enviando todo el show/xxx.html a la misma URL (la primera). Dado que ambas reglas de reescritura están utilizando exactamente el mismo parámetro, solo funcionará el primero.
Podrías resolver esto de dos maneras diferentes.
O usas show.php? Id = xxx y acepta el nombre y la categoría en tu PHP y detirman allí qué página mostrar.
O usa dos tipos diferentes de URL en su reescritura para obtener show/categoría/estudiante.html y show/student/John-doe.html como así:
RewriteRule ^show/student/([^/]*)\.html$ show.php?name=$1 [L]
RewriteRule ^show/category/([^/]*)\.html$ show.php?category=$1 [L]