Cómo realizar la redirección interna con mod_rewrite en Apache
- 3191
- 920
- Eduardo Tapia
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 sitioPor 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:
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:
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!
- « Redirige las solicitudes del sitio web basadas en el navegador utilizado (Chrome, Firefox o IE)
- 5 formas de vaciar o eliminar un gran contenido de archivo en Linux »