Versión 2.5 del Servidor HTTP Apache

mod_rewrite proporciona una forma de modificar las
solicitudes de URL entrantes, dinámicamente, basándose en reglas de expresiones
regulares. Esto le permite mapear URLs arbitrarias a
su estructura interna de URLs de la forma que desee.
Soporta un número ilimitado de reglas y un número ilimitado de condiciones de regla adjuntas para cada regla, para proporcionar un mecanismo de manipulación de URLs realmente flexible y potente. Las manipulaciones de URL pueden depender de varias pruebas: variables del servidor, variables de entorno, cabeceras HTTP, marcas de tiempo, consultas a bases de datos externas, y varios otros programas externos o manejadores, pueden usarse para lograr una coincidencia de URL granular.
Las reglas de reescritura pueden operar sobre las URLs completas, incluyendo las partes
de path-info y cadena de consulta, y pueden usarse en contexto per-servidor
(httpd.conf), contexto per-virtualhost (bloques <VirtualHost>), o
contexto per-directorio (archivos .htaccess y bloques <Directory>). El
resultado reescrito puede llevar a más reglas, sub-procesamiento
interno, redirección de solicitud externa, o paso a través de
proxy, dependiendo de qué banderas
adjunte a las reglas.
Dado que mod_rewrite es tan potente, puede ser bastante
complejo. Este documento complementa la documentación de referencia, e
intenta aliviar algo de esa complejidad, y proporcionar ejemplos altamente
anotados de escenarios comunes que puede manejar con
mod_rewrite. Pero también intentamos mostrarle cuándo no debería
usar mod_rewrite, y usar otras características estándar de Apache en su lugar,
evitando así esta complejidad innecesaria.