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?

¿Fue útil?

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]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top