Cómo usar mod_rewrite de forma simple y rápida

Aunque suelo utilizar WordPress o Angular para hacer proyectos web, el otro día me encontré haciendo un pequeño sitio web enteramente en PHP. Tuve que buscar algo de información para usar mod_rewrite, ya que hacía lo menos 6 años que no lo usaba. Y como no, he pensado en colgarlo aquí por si a alguien le interesaba.

En general, todos los comandos de reescritura de URL siguen el mismo patrón:

RewriteRule Pattern Substitution [OptionalFlags]

Veamos una explicación a continuación:

  • RewriteRule: Directiva que indica la inserción de una nueva regla de reescritura.
  • Pattern: Esta sección está dedicada a interpretar la URL solicitada, utilizando expresiones regulares.
  • Substitution: Esta es la URL real de la página con la información que queremos mostrar.
  • Optional Flags: Una flag es una etiqueta (ubicada siempre al final de la directiva) que puede cambiar el comportamiento de la expresión.

Las Flags más comunes son:

  • [F] haciendo que la URL sea prohibida
  • [NC] forzando a no tener en cuenta las mayúsculas
  • [R=301] / [R=302] marca el contenido como movido permanentemente o temporalmente
  • [L] indicando que es la última de las reglas.

Ejemplo práctico

Por ejemplo, tenemos una web que tiene una página con una dirección tipo:

http://ejemplo.com/juegos.php?juego=doom

Y queremos que la URL sea más atractiva, del estilo:

 http://ejemplo.com/juegos/doom

Entonces, debemos modificar nuestro archivo .htaccess de la siguiente manera:

RewriteEngine on
RewriteRule ^juegos/([A-Za-z0-9-]+)/?$ juegos.php?juego=$1 [NC]

Regla explicada

^juegos: Para ser detectada y desviada, la URL debe empezar por juegos (ten en cuenta que esto sólo se refiere al texto que sigue al nombre del dominio). Si empieza por cualquier otra cosa, la regla no se aplicará y la URL seguirá siendo la misma.

([A-Za-z0-9-]+): El contenido dentro del paréntesis se refiere a cualquier información que pueda escribirse en la URL. En otras palabras, la URL se reescribirá para reflejar lo que un visitante del sitio introduzca después de /juegos/.

+: El signo + indica que lo que hay entre los paréntesis puede ser uno o más caracteres (a diferencia de, por ejemplo, un solo carácter que es una letra o un número).

/?$: el signo de dólar señala el final de la cadena. El signo de interrogación permite que el último carácter de la cadena sea una barra inclinada (aunque no lo requiere).

juegos.php?juego=$1: el $1 indica dónde debe ir la cadena del patrón. En otras palabras, pondrá la información capturada de lo que se haya escrito en la parte «([A-Za-z0-9-]+):». Una vez completado el proceso, el navegador mostrará la información de la segunda URL.

[NC]: es una bandera al final de la frase, que indica que la regla debe ignorar los casos de todos los caracteres de la cadena.

Espero que os haya servido de ayuda.

«
»

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.