En las aplicaciones web , un motor de reescritura es un componente de software que realiza la reescritura de las URL (Uniform Resource Locator), modificando su apariencia. Esta modificación se denomina reescritura de URL . Es una forma de implementar el mapeo o enrutamiento de URL dentro de una aplicación web . El motor suele ser un componente de un servidor web o un marco de aplicación web . Las URL reescritas (a veces conocidas como URL cortas , bonitas o elegantes, URL SEF amigables para los motores de búsqueda o slugs ) se utilizan para proporcionar enlaces más cortos y de aspecto más relevante a las páginas web. La técnica agrega una capa de abstracción entre los archivos utilizados para generar una página web y la URL que se presenta al mundo exterior.
Uso
Los sitios web con contenido dinámico pueden utilizar URL que generen páginas desde el servidor mediante parámetros de cadena de consulta . Estas suelen reescribirse para que se asemejen a las URL de las páginas estáticas de un sitio con una jerarquía de subdirectorios . Por ejemplo, la URL de una página wiki con el título Rewrite_engine podría ser:
http://example.com/w/index.php?title=Rewrite_engine
pero puede reescribirse como:
http://example.com/wiki/Rewrite_engine
Un blog podría tener una URL que codifique las fechas de cada entrada:
http://www.example.com/Blog/Posts.php?Year=2006&Month=12&Day=19
Se puede modificar así:
http://www.example.com/Blog/2006/12/19/
que también permite al usuario cambiar la URL para ver todas las publicaciones disponibles en diciembre, simplemente eliminando el texto que codifica el día '19', como si estuviera navegando "hacia arriba" en un directorio:
http://www.example.com/Blog/2006/12/
Un sitio puede pasar términos especializados de la URL a su motor de búsqueda como un término de búsqueda. Esto permitiría a los usuarios buscar directamente desde su navegador. Por ejemplo, la URL ingresada en la barra de ubicación del navegador :
http://example.com/término de búsqueda
El navegador codificará la URL antes de realizar la solicitud HTTP . El servidor podría reescribir esto de la siguiente manera:
http://example.com/search.php?q=search%20term
Beneficios y desventajas
El uso de la reescritura de URL tiene varias ventajas: [1]
- Los enlaces son más “limpios” y descriptivos, mejorando su “amabilidad” tanto para los usuarios como para los motores de búsqueda .
- Evitan " enlaces en línea " no deseados que pueden desperdiciar ancho de banda .
- El sitio puede seguir usando las mismas URL incluso si se modifica la tecnología subyacente utilizada para ofrecerlas (por ejemplo, si se cambia a un nuevo motor de blogs ).
Sin embargo, también puede haber inconvenientes: si un usuario desea modificar una URL para recuperar datos nuevos, la reescritura de la URL puede dificultar la construcción de consultas personalizadas debido a la falta de variables con nombre. Por ejemplo, puede resultar difícil determinar la fecha a partir del siguiente formato:
http://www.ejemplo.com/Blog/06/04/02/
En este caso, la cadena de consulta original fue más útil, ya que las variables de consulta indicaban mes y día:
http://www.example.com/Blog/Posts.php?Year=06&Month=04&Day=02
Marcos web
Muchos marcos web incluyen la reescritura de URL, ya sea directamente o a través de módulos de extensión.
- El servidor HTTP Apache tiene reescritura de URL proporcionada por el módulo mod_rewrite. [2]
- URL Rewrite está disponible como una extensión para Microsoft IIS . [3]
- Ruby on Rails tiene reescritura de URL incorporada a través de rutas. [4]
- Jakarta Servlet tiene reescritura de URL extensible a través de OCPsoft URLRewriteFilter y Tuckey UrlRewriteFilter.
- Jakarta Faces ha simplificado la reescritura de URL a través de PrettyFaces: URLRewriteFilter.
- Django utiliza un sistema basado en expresiones regulares . No se trata estrictamente de reescritura de URL, ya que no hay ningún script que "reescribir", ni siquiera una estructura de directorio; pero proporciona la flexibilidad total de la reescritura de URL. [5]
- Java Stripes Framework tiene una funcionalidad integrada desde la versión 1.5. [6]
- Muchos frameworks de Perl, como Mojolicious y Catalyst , tienen esta característica. [7]
- CodeIgniter proporciona reescritura de URL.
- lighttpd tiene un módulo mod_rewrite. [8]
- nginx tiene un módulo de reescritura. [9] [10] Por ejemplo, es posible generar una página multivariable y de múltiples enlaces desde una URI como .mw-parser-output .monospaced{font-family:monospace,monospace}/f101,n61,o56,d/ifconfig, donde múltiples partes individuales como f101 se expanden con la ayuda de expresiones regulares en variables para significar FreeBSD 10.1-RELEASE y así sucesivamente.
- El servidor HTTP Hiawatha tiene un kit de herramientas de URL que admite la reescritura de URL. [11]
- El servidor HTTP Cherokee admite expresiones regulares de reescritura de URL y redirecciones.
Desde una perspectiva de desarrollo de software , la reescritura de URL puede ayudar en la modularización del código y el flujo de control , [12] lo que la convierte en una característica útil de los marcos web modernos.
Véase también
- Controlador de entrega de aplicaciones
- Administrador de tráfico de aiScaler
- .htaccess
- Servidor HTTP Apache
- Negociación de contenidos
- HTTP
- Servidor de información de Internet
- Enlace permanente
- Servidor web Zeus
Notas
- ^ Muchos de estos solo se aplican a servidores HTTP cuyo comportamiento predeterminado es asignar URL a entidades del sistema de archivos (es decir, archivos y directorios); ciertos entornos, como muchas plataformas de servidores de aplicaciones HTTP , hacen que esto sea irrelevante.
- ^ Documentación de mod_rewrite
- ^ Extensión de reescritura de URL para Microsoft IIS
- ^ "Enrutamiento de Rails desde el exterior hacia el interior". "Ruby on Rails" . Consultado el 25 de abril de 2014 .
- ^ URLconf de Django
- ^ URL limpias en Stripes 1.5
- ^ Guías - Guía de Mojolicious para la galaxia. Mojolicious. Consultado el 8 de septiembre de 2013.
- ^ Docs ModRewrite - Lighttpd - lighty labs. Redmine.lighttpd.net. Consultado el 8 de septiembre de 2013.
- ^ "ngx_http_rewrite_module - reescritura". nginx.org . Consultado el 25 de diciembre de 2014 .
- ^ Murenin, Constantine A. (18 de febrero de 2013). "¿Un sitio web dinámico escrito completamente en nginx.conf? ¡Presentamos mdoc.su!". nginx@nginx.org (Lista de correo) . Consultado el 24 de diciembre de 2014 .
- ^ URL TOOLKIT parte del manual del servidor web Hiawatha
- ^ "URL limpia". DocForge . Consultado el 25 de abril de 2014 .
Enlaces externos
- Mod_rewrite de Apache