Módulo Rewrite

Vamos a explicar en una guía rápida el funcionamiento del módulo mod_rewrite y la forma de manipular URL.

Veremos cómo se usa el módulo de Apache  mod_rewrite para resolver algunos problemas con las URL que tienen generalmente los webmasters en la práctica. El modulo Apache mod_rewrite es un módulo el cual proporciona una ponderosa forma de manipular las URL. Con este módulo usted podrá hacer todas las manipulaciones de las URL de una forma que nunca soñó.  El precio que tiene que pagar es aceptar la complejidad, porque mod_rewrite no es fácil de entender y usar para el principiante.

NOTA: Dependiendo de la configuración del servidor puede ser necesario cambiar los ejemplos para su caso específico. Siempre hay que tratar de entender lo que realmente haremos antes de que se lo utilice.  Un mal uso podría conducir a bucles de muertos y se colgará el servidor.

La mayoría de los ejemplos se pueden utilizar en el archivo .htaccess mientras que los otros sólo en el archivo htppd.conf Apache. Hoy en día se puede utilizar este módulo para Windows, incluso de forma gratuita a través de II7 o algunos programas de pago.

RewriteCond

La directiva RewriteCond define una condición para la regla. Mantenga una  RewriteRule con una o más directivas  RewriteCond. La siguiente regla de reescritura sólo se utiliza si su patrón coincide con el estado actual de la URI y si estas condiciones adicionales se aplican también.

Puede establecer marcas especiales para el patrón de la condición si se añade un tercer argumento de la directiva RewriteCond. Marca es una lista separada por comas de las siguientes opciones:

[NC] (“No Case” en inglés, ningún caso)

Esto hace que la condición patrón de mayúsculas y minúsculas, no hay diferencia entre «AZ» y «a-z ‘.

[OR] (OR siguiente condición)

Se usa para combinar condiciones con un OR.

RewriteRule

La directiva RewriteRule es que realmente reescribe.

Puede establecer marcas especiales para el patrón de condición si se añade un tercer argumento de la directiva RewriteCond. Marcas es una lista separada por comas de las siguientes opciones:

[R] (fuerza Redirección)
Redirige a una URL  externa. Envía una respuesta HTTP con código 302, movido temporalmente.

[F] (fuerza la URL para ser prohibida)
Fuerza la actual URL para ser prohibida. Envía la respuesta HTTP 403, prohibido.

[G] (fuerza URL a estar afuera)
Fuerza la actual URL a estar afuera. Envía un código de respuesta 410, ido.

[L] (última regla)
Fuerza el procesamiento de reescritura para detenerse aquí, y no se aplican más reglas de reescritura.

[P] (forzar proxy)
Esta marca fuerza a la actual URL como una solicitud proxy y la coloca a través del módulo  mod_proxy.

 

Expresiones Regulares

Algunas pistas sobre la sintaxis de expresiones regulares:

Texto:

. Cualquier carácter

[caracteres] Uno de los caracteres

[^caracteres] Ninguno de los caracteres

texto1|texto2    texto1 o texto2

Cuantificadores:

? 0 o 1 del texto precedente

* 0 o N del texto precedente  (N > 0)

+ 1 o N del texto precedente  (N > 1)

Grouping:

(texto) Agrupación del texto

Anclaje:

^ Inicia la línea de anclaje o del patrón

$ Finaliza la línea de anclaje o del patrón

Escape:

\ caracter   Escape del character particular
Condición de patrón

Hay algunas variantes especiales para  CondPatterns. En lugar de usar expresiones regulares usted debe usar alguna de las siguientes:

< Condición (es menor que la Condición)
Se usa para tratar la condición como una cadena y lo compara con cadenas. Verdadero si la cadena es menor que la condición.

> Condición (es mayor que la Condición)
Se usa para tratar la condición como una cadena y la compara con cadenas. Verdadero si la cadena es mayor que CondPattern.

= Condicóon (es igual a la Condición)
Se usa para tratar la condición como una cadena y la compara con cadenas. Verdadero si la cadena es igual a CondPattern.

-d (es un directorio)
Se usa para tratar la cadena como una ruta y prueba si es que existe y es un directorio.

-f (es un archive regular)
Se usa para tratar la cadena como una ruta y prueba si es que existe y es un archivo regular.

-s (es un archive regular con tamaño)
Se usa para tratar la cadena como una ruta y  verifica si es que existe y es un archivo normal con un tamaño mayor que cero.

-l (es un enlace simbólico)
Se usa para tratar la cadena como una ruta y verifica si existe y es un enlace simbólico.

-F (es un archivo existente vía una sub solicitud)

Comprueba si la cadena es un archivo válido y accesible a través de todo el servidor configurado actualmente, controla el acceso por esa ruta. Usarlo con cuidado, ya que disminuye el rendimiento de los servidores!

-U (es una URL existente vía una sub solicitud)
Comprueba si la cadena es una URL válida y accesible a través de todo el servidor configurado actualmente, controla el acceso por esa ruta. Usarlo con cuidado, ya que disminuye el rendimiento de los servidores!

NOTA: Usted puede usar el prefijo de la cadena de patrón con un ‘!’ carácter (signo de exclamación) para especificar un patrón
que no coincida.

(Visitado 1.302 veces, 1 visitas hoy)