RewriteRule no funciona

Este es el contenido de mi archivo .htaccess:

RewriteEngine on
RewriteRule ^upload$ upload.php
RewriteRule ^/(\d+)/?.*$ /view.php?id=$1 [L]

La primera regla funciona correctamente. Cuando navego a http://localhost/upload muestra la página upload.php.

Sin embargo, la segunda regla no lo hace. Cuando busco: http://localhost/1234/some-string Recibo un error 404. Está destinado a mostrar esta página: http://localhost/view.php?id=1234.

Con suerte, puede ver lo que estoy tratando de hacer con la regla, quiero que la última cadena al final de la URL se ignore por completo y tome el 1234 como parámetro para view.php.

¿Alguien puede detectar por qué esto no funciona? He intentado todo lo que puedo pensar, pero sin éxito. ¡Gracias!

preguntado el 16 de mayo de 11 a las 18:05

1 Respuestas

intentará encontrar el directorio /1234/ y fallando. cambiar el / a una - y debería funcionar

EDITAR: lo entendí completamente mal ... en realidad es que tienes un / al comienzo de su patrón, mientras que MOD_REWRITE recibe la ruta sin la primera barra.

contestado el 17 de mayo de 11 a las 13:05

Editar: lo siento, me equivoqué. Tienes razón. Funciona si hago esto en su lugar: RewriteRule ^(\d+)/?.*$ /view.php?id=$1 [L]. No estoy seguro de lo que quisiste decir con -, aunque. - Josh

es porque busca directorios primero, no sé cómo evitar que haga eso. El primero funciona porque la URL no termina con un / (tampoco funcionaría en ese caso, porque la regla no especifica esa eventualidad .-- fbstj

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.