Cómo realizar la redirección interna con mod_rewrite en Apache

Cómo realizar la redirección interna con mod_rewrite en Apache

En este artículo y en el siguiente explicaremos cómo usar mod_rewrite, para asignar ciertas solicitudes de HTTP a otras páginas en un sitio web, o a una URL externa.

En otras palabras, este conocido módulo Apache le permitirá redirigir una URL a otra, que ilustraremos a través de ejemplos prácticos.

Leer sugerido: 5 consejos para aumentar el rendimiento de su servidor web Apache

NOTA: Los ejemplos a continuación suponen que está al menos un poco familiarizado Expresiones regulares compatibles con perl (Pcre). Dado que ese tema está fuera del alcance de este artículo, consulte la versión 24 de Perl 5.0 documentos para más detalles sobre PCRE.

Antes de continuar, asegúrese de que el módulo de reescritura esté cargado. Aunque este es el comportamiento predeterminado en Cento y distribuciones similares, en Debian y derivados que necesitará cargarlo manualmente de la siguiente manera:

# a2enmod reescribir 

Configuración de Apache para usar el módulo mod_rewrite

Para simplificar, usemos el sitio predeterminado en un Centos 7 caja (IP 192.168.0.100) para explicar cómo usar mod_rewrite (Raiz del documento: /var/www/html, archivo de configuración: /etc/httpd/conf/httpd.confusión).

Para que Apache use este módulo, agregue la siguiente línea al archivo de configuración:

RewriteEngine en 

Es importante tener en cuenta que esta configuración no será heredada por hosts virtuales en el mismo cuadro.

Por lo tanto, necesitarás agregar Mota de rewrite en cada host virtual donde desea usar reglas de reescritura.

Redirección interna: mapeo de una URL a otra en el mismo host virtual

Una redirección interna es el ejemplo más simple de mod_rewrite. Si desea redirigir todas las solicitudes para por defecto.aspx a índice.html, Agregue la siguiente línea (también conocida como regla de reescritura) bajo Mota de rewrite en:

Rewriterule "^/default \.ASPX $ ""/índice.html " 

Y no olvide reiniciar Apache para que los cambios entren en vigencia.

Esto puede ser útil si su sitio fue diseñado originalmente usando ÁSPID y luego cambió a simple Html5. Los motores de búsqueda tendrán el .aspx Archivo indexado pero ese archivo ya no existe.

En ese caso, deberá encontrar una manera de redirigir la solicitud para que sus posibles visitantes no se encuentren con una página de error. Para probar, creemos un archivo HTML simple llamado índice.html adentro /var/www/html Con el siguiente contenido:

    Nuevo sitio   

Por defecto.ASPX estuvo aquí, pero ahora es índice.html

El signo de intercalación y dólar Los letreros harán que la expresión regular coincida con cualquier cadena que comience con /por defecto y terminando con .aspx, respectivamente.

Leer sugerido: Instale MOD_PageSpeed ​​para acelerar el rendimiento de Apache hasta 10x

Ahora inicia tu navegador y apunte a 192.168.0.100/predeterminado.aspx. Si las cosas van como se esperaba, Apache debería servir índice.html en cambio.
Sin embargo, el usuario final aún verá por defecto.aspx En la barra de direcciones, lo que hace que el cambio sea totalmente transparente:

Mapeo de URL a otra página en el dominio

Si desea que la URL en la barra de direcciones demuestre que el servidor que realmente está sirviendo índice.html En lugar de una página llamada por defecto.aspx, agregar [R, L] Al final de la regla de reescritura de la siguiente manera:

Rewriterule "^/default \.ASPX $ ""/índice.html "[r, l] 

Aquí [R, L] son dos banderas opcionales que indican que se debe emitir una redirección HTTP completa al navegador (R) y que no se deben procesar más reglas:

Mapeo de URL a la página del índice real

Tenga en cuenta cómo se muestra ahora la barra de direcciones índice.html, Como se esperaba, en lugar de por defecto.aspx Como lo hizo antes.

Resumen

En este artículo explicamos cómo usar mod_rewrite para realizar una redirección interna. Estén atentos para la próxima publicación donde aprenderemos cómo redirigir a un recurso que se ha movido a un servidor diferente y cómo mostrar contenido personalizado en función del navegador del usuario. Hasta entonces, consulte el Apache 2.4 documentos para una lista completa de las banderas de reescritura disponibles.

Como siempre, no dude en usar el formulario de comentarios a continuación si tiene alguna pregunta o comentarios sobre este artículo. Esperamos con interés escuchar de usted!