Estos dias, estoy embarcado en un proyecto en el cual hacia mucho tiempo en el que no he tenido la necesidad de tocar el .htaccess y la verdad estaba un poco pez.
Necesitaba hacer una reescritura URL y mostrar el parámetro que envio por GET al final de la url.
Tenia la siguiente url
ficha.php?anuncio=1
Y yo la queria reescribir así:
esto-es-un-ejemplo-1.html
despues de dar muchisimas vueltas, y darme mogollon de dolores de cabeza, caí en la cuenta que lo estaba haciendo mal:
RewriteRule ^([a-zA-Z0-9-]*)-(.+).html$ ficha.php?anuncio=$1
Estaba capturando lo que habia en el primer paréntesis y efectivamente no me funcionaba, la solucion era:
RewriteRule ^([a-zA-Z0-9-]*)-(.+).html$ ficha.php?anuncio=$2
¿por qué?, sencillo, cada uno de los operadores metidos entre paréntesis actua como un grupo, estaba pasando el primer grupo en vez del segundo.
Espero que os sirva de ayuda en alguna ocasión 😉