Agilidad web
Documentación

Agilidad web

Resumen

El complemento Web Agility de Triumph añade funciones importantes para ayudarte a mejorar las capacidades de SEO de tus sitios web. Y lo mejor de todo es que aprovecha el potencial de Rock para simplificar la administración. Estas herramientas incluyen:

  • Redirección de solicitudes: esta función te permite establecer reglas para redirigir el tráfico a nuevas ubicaciones. Esto contribuye a mejorar el SEO, ya que garantiza que tus enlaces no dejen de funcionar. Además, te permite hacer algunas cosas muy interesantes.
  • Mapa del sitio XML: disponer de un mapa del sitio para tu página web externa es otra de las mejores prácticas de SEO. En el caso de una página web dinámica, esto resulta más complicado de lo que podrías pensar. Este módulo te permite rastrear tu página web y generar automáticamente el archivo del mapa del sitio.
  • Encabezados de respuesta: el módulo de encabezados de respuesta te permite añadir encabezados de respuesta a las solicitudes de tu sitio web. Esto te permite un control muy preciso sobre las estrategias de almacenamiento en caché, así como sobre una gran variedad de otros casos de uso.
  • Encabezados de solicitud: por último, el módulo de encabezados de solicitud te permite añadir encabezados a las solicitudes entrantes en tu sitio web.

A continuación se analizan en detalle cada una de estas herramientas.

Redirector

El módulo Redirector te permite un control total sobre las solicitudes entrantes de los clientes, lo que te permite redirigir o transformar dichas solicitudes con facilidad. Quizás te preguntes por qué esto sería necesario. Aunque este complemento es una herramienta muy útil para muchos casos de uso, la razón principal por la que deberías interesarte por él es la optimización para motores de búsqueda (SEO).

Cuando trasladas o modificas tu página web, es importante que no se rompan todos los enlaces anteriores. Recuerda que estos enlaces siguen existiendo en los motores de búsqueda y, lo que es más importante, como enlaces desde otras páginas web. El plugin Redirector te permite detectar las solicitudes de enlaces antiguos y redirigirlas a su nueva ubicación.

Por ejemplo, un enlace a una entrada de blog de tu antigua página web podría haber sido:

http://www.mysite.com/blogs/youth/{post-title}

No es fácil redirigirlo a su nueva ubicación en:

https://www.mysite/youth/blog/{post-title}

O bien, supongamos que tu página web responde tanto a https://www.mysite.com como a https://mysite.com, pero solo quieres que una de ellas sea la principal (lo que los expertos denominan «canónica»). El plugin de redireccionamiento puede redirigir todo el tráfico de www. a la otra dirección (o al revés, si lo prefieres).

Sin embargo, eso es solo una pequeña muestra de lo que se puede hacer. Sigue leyendo para descubrir todas las opciones de este potente complemento.

Configuración

Una vez instalado, encontrarás este módulo en «Herramientas de administración > Complementos instalados > Web Agility > Reglas de redirección». Al hacer clic en el enlace, accederás a una lista de las reglas de redirección configuradas.

En general, es mejor tener el menor número posible de reglas, ya que cada una de ellas deberá tenerse en cuenta en cada solicitud que reciba tu servidor. Dicho esto, hemos trabajado duro para que este complemento sea muy eficaz (rápido).

Para mejorar la velocidad, puedes indicar las extensiones de archivo que se deben ignorar. Por ejemplo, normalmente no es necesario añadir redireccionamientos para archivos de imágenes, CSS o JavaScript .

Detalles técnicos

Para los interesados, aquí tenéis algunos detalles adicionales sobre lo que ocurre «bajo el capó»:

  • El complemento Redirector funciona como un módulo HTTP dentro de IIS. Esto significa que recibirá la solicitud HTTP antes incluso de que Rock tenga conocimiento de ella. Esto te permite modificar la URL real antes de que llegue a Rock.
  • Dado que Redirector funciona al margen de Rock, no puede leer su configuración directamente desde la base de datos. En su lugar, la configuración se almacena en un archivo JSON situado en el directorio «App_Data» (~/App_Data/RedirectorRules.json).
  • Aunque las reglas se almacenan en el archivo, también se guardan en la memoria caché para agilizar el proceso. Al actualizar una regla o un valor de configuración, se vaciará esta caché.

Reglas de redirección

Pasemos a lo más interesante: las reglas. Las reglas se dividen en dos partes:

  1. Criterios de coincidencia: qué hay que tener en cuenta en una solicitud web para que se active una regla concreta.
  2. Acción: qué acción se debe realizar si se encuentra una coincidencia.

Analicemos cada uno de estos pasos y veamos las opciones de configuración disponibles para cada uno.

Criterios de coincidencia

El primer paso del proceso de redireccionamiento consiste en determinar si la solicitud entrante debe coincidir con una regla específica. Si coincide, se llevará a cabo la acción correspondiente. La lógica de coincidencia es muy personalizable. Veamos qué posibilidades ofrece.

Patrón de URL de origen

La lógica principal de coincidencia será «qué buscamos en la URL entrante». Aquí proporcionamos esa cadena. Ten en cuenta que la coincidencia se realiza con la URL completa (por ejemplo, https://www.mysite.com/GroupViewer.aspx?Group=12).

Tipo de comparación de fuentes

A continuación, decidimos cómo hacer coincidir el patrón con la URL. Las opciones son:

  • Comienza por: la URL debe comenzar por la cadena que hemos indicado.
  • Termina con: la URL debe terminar con la cadena que hemos indicado.
  • Contiene: la URL debe contener la cadena que hemos facilitado.
  • Expresión regular: se utilizará una expresión regular para determinar la coincidencia. Esta opción también te permite extraer fragmentos de la URL para utilizarlos en la acción. Esta opción es tan potente que le hemos dedicado toda una sección del manual, que encontrarás a continuación.

Componentes de la partida

Ya sabemos qué buscamos en la URL. Ahora podemos establecer algunos criterios avanzados. Las opciones son las siguientes:

  • Solo URL: esta es la opción predeterminada. En este caso, la búsqueda solo tendrá en cuenta la URL.
  • URL y estado de inicio de sesión: en este caso, compararemos la URL y el estado de inicio de sesión («Ha iniciado sesión» o «No ha iniciado sesión») de la persona. Esto resulta muy útil, ya que nos permite redirigir a diferentes páginas en función de si sabemos quién es esa persona.
  • URL y Referrer: esta opción te permite filtrar aún más según el valor del encabezado HTTP «Referrer» (https://en.wikipedia.org/wiki/HTTP_referer, escrito incorrectamente a propósito). Este valor es la dirección de la página desde la que se ha enlazado al documento. Con esta configuración, puedes redirigir en función de la página desde la que se ha enlazado. El valor que introduzcas se considerará coincidente si el «Referrer» contiene dicho valor.
  • URL y agente de usuario: esta configuración te permite filtrar aún más según el navegador que utilice el usuario. Esto resulta útil para gestionar situaciones en las que un usuario pueda estar utilizando un navegador muy antiguo que tu sitio web no admita. En ese caso, podrías redirigirlo a una página en la que se le informe de que tu sitio web no es compatible con ese navegador obsoleto.

Comparación con distinción entre mayúsculas y minúsculas

Esta opción te permite determinar si la búsqueda debe distinguir entre mayúsculas y minúsculas. A veces eso puede ser justo lo que necesitas, otras veces (la mayoría de las veces, de hecho) no será necesario. Sea como sea, tienes todas las opciones cubiertas.

Configuración avanzada

Quizá hayas visto el botón para mostrar y ocultar la configuración avanzada. Esta configuración te permite llevar tus reglas a un nivel superior.

Filtros de direcciones IP

Puedes limitar tus reglas a clientes con direcciones IP específicas. Quizás te interese establecer algunas reglas especiales para personas de tus campus u otras redes conocidas. Puedes especificar varios filtros de IP para cada regla. Estos filtros admiten varios formatos diferentes. Veamos los más habituales:

  • Dirección IP única: 192.168.100.12
  • Rango de direcciones IP: 192.168.100.1 – 192.168.100-255
  • Rango de direcciones abreviadas: 192.168.100.23-45
  • Máscara de subred: 192.168.100.1/255.255.255.0
  • Expresión CIDR: 192.168.100.1/24
  • IPv6 - fe80::/10

Cookies

En ocasiones, es posible que quieras filtrar la regla en función de la existencia (o ausencia) de una cookie. Esto permite que tu código (Lava o C#) ayude a incluir o excluir a los usuarios de las reglas.

Acciones

Ahora que ya tenemos claros los criterios de coincidencia, veamos qué opciones hay cuando se procesan las reglas. Lo primero que debemos determinar es si debemos redirigir, dejar pasar la solicitud o generar un error. Analicemos cada una de ellas.

Redirigir

Esta será la opción más habitual. A partir de la URL facilitada, redirigiremos a la nueva URL. Hay varios tipos de redirección entre los que elegir.

  • Redirección permanente 301: es la opción predeterminada. Indica al navegador (o al rastreador de búsqueda de Google) que la página se ha trasladado y proporciona la nueva ubicación. Es la opción más adecuada para el SEO.
  • Código 302: la redirección 302 indica al solicitante que esta redirección es temporal. Solo debe utilizarse para los métodos GET (la mayoría de las solicitudes son de tipo GET).
  • Redirección temporal 307: esto resulta un poco confuso, ya que parece muy similar a la 302. Esto se debe a que esta redirección solo debe utilizarse para solicitudes POST.
  • Redirección permanente 308: similar a la 301, pero permite cambiar el método HTTP.

Advertencia

Al trabajar con redireccionamientos, es importante tener en cuenta que Chrome almacena en caché los redireccionamientos 301. Esto puede complicar un poco las pruebas de las reglas y dar lugar a algunos resultados inesperados. Consulta esta entrada del blog para obtener información sobre cómo borrar la caché de redireccionamientos de Chrome (https://salferrarello.com/chrome-clear-redirect-cache/).

Passthrough

Esta opción no inicia ningún redireccionamiento. En su lugar, modifica la URL de entrada y continúa con el procesamiento de la solicitud. Por lo que a Rock respecta, la URL de la solicitud original nunca existió. Solo ve la nueva URL modificada.

Error

Esta opción te permite especificar un error HTTP si se cumple la regla. Ten en cuenta que este error se procesa antes de llegar a Rock, por lo que no se ejecutará la lógica habitual de Rock para los errores 404.

Patrón de URL de destino

Si tu acción es una redirección o un paso directo, tendrás que especificar el patrón de la URL de destino. Esta será la nueva URL a la que quieres que acuda el usuario. Ten en cuenta que, si has utilizado una expresión regular en la parte anterior, puedes crear esta dirección de forma dinámica a partir de fragmentos de la original. Esto se explica en la sección «Expresiones regulares en las reglas», más abajo.

Expresiones regulares en las reglas

Las reglas de redirección se vuelven muy potentes cuando se añaden expresiones regulares a la ecuación. No te preocupes, no tiene por qué ser complicado. Te daremos suficientes ejemplos para ayudarte a sacar el máximo partido con el mínimo esfuerzo.

Sintaxis de las expresiones regulares

Se han escrito libros sobre la sintaxis de las expresiones regulares y muchas personas se han quedado calvas de tanto tirarse del pelo por culpa de ellas. Pero no te preocupes, te vamos a dar una hoja de referencia con los casos de uso más habituales.

En primer lugar, algunos conceptos básicos:

  1. . significa cualquier carácter
  2. * significa cualquier número del carácter anterior
  3. Entonces, .* significa cualquier número de cualquier carácter
  4. Es importante tener en cuenta que el carácter /, que se utiliza habitualmente en las URL, debe ir precedido de un carácter \.

Caso de uso: Buscar URL que terminen en «groups» O «smallgroups»

Supongamos que quieres encontrar coincidencias con cualquiera de las siguientes URL:

  • http://www.mysite.com/smallgroups
  • http://www.mysite.com/groups

Esta expresión serviría:

.*\/(grupos|grupos pequeños)$

La lógica es la siguiente:

  • Empieza por lo que sea (.*)
  • Entonces contiene un / \/()
  • Entonces contiene «grupos» o «grupos pequeños» ( (grupos|grupos pequeños) )
  • Y el $ dice que esto tiene que ir al final

Caso de uso: Coincidencia con una barra final opcional

Supongamos que quieres encontrar coincidencias con cualquiera de las siguientes URL:

  1. http://www.mysite.com/blog
  2. http://www.mysite.com/blog/

La expresión siguiente coincidiría con cualquiera de las siguientes opciones:

.*\/blog[\/]?$

La lógica es la siguiente:

  1. Empieza por lo que sea (.*)
  2. Entonces tiene /blog
  3. Y podría llevar una barra al final, si se desea ([\/])
  4. Y el $ dice que esto tiene que ir al final

Caso de uso: Identificar todas las entradas del blog que no utilicen SSL

Supongamos que quieres redirigir todo el tráfico de tu antiguo blog, que no estaba cifrado, a una nueva página de tu sitio web. Podrías utilizar la siguiente expresión:

http:\/\/.*\/blog\/.*

La lógica es la siguiente:

  1. Empieza por «http://» (http:\/\/)
  2. Entonces tiene un número cualquiera de caracteres (.*)
  3. Entonces tiene /blog/ (\/blog\/)
  4. A continuación, puede haber cualquier número de caracteres hasta el final (.*)

Extracción de información de origen

Aunque las expresiones regulares son útiles en las condiciones de coincidencia, en la mayoría de los casos las opciones «empieza por», «termina en» y «contiene» te permitirán obtener lo que necesitas. Sin embargo, donde las expresiones realmente destacan es cuando quieres extraer fragmentos de la URL de origen para utilizarlos en la nueva URL de destino. Por ejemplo, si estuvieras trasladando tu blog desde:

https://www.mysite.com/blogs/youth/parenting-tips-for-grade-school a: https://www.mysite.com/youth/blog/parenting-tips-for-grade-school

Te interesará extraer el nombre de la entrada para utilizarlo en la nueva dirección. Para ello, crearemos grupos de captura. Estos grupos se definen en tu expresión regular mediante el uso de paréntesis. Por ejemplo, para capturar el nombre de la entrada del blog, utilizaríamos la siguiente expresión.

.*\/blogs\/juventud\/(.*)

Esto coincidiría con la primera URL anterior y «capturaría» el título de la entrada del blog para utilizarlo en la redirección como la variable $1. La URL del patrón de destino sería entonces:

https://www.mysite.com/youth/blog/1 dólar

Esto permite que el título de cualquier entrada del blog de la URL de origen se añada al destino de la redirección.

No estás limitado a un solo grupo de captura; de hecho, puedes tener tantos como quieras. Supongamos que, por alguna razón, quisieras que tu regla funcionara tanto con http como con https y respetara el protocolo durante la redirección (no es una buena práctica en el mundo actual, en el que solo se utiliza https, pero supongamos que lo hicieras). Podrías utilizar los siguientes patrones:

Patrón de URL de origen (http|https).*\/blogs\/youth\/(.*)

Patrón de diana $1://www.mysite.com/youth/blog/$2

Eliminar «www.» de las URL

Supongamos que quieres eliminar «www.» de todas las URL de tu sitio web. Es recomendable que tu sitio web solo responda a una (https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Choosing_between_www_and_non-www_URLs).

Patrón de URL de origen (http|https):\/\/www\.mysite\.com(.*)

Patrón de diana https://mysite.com$2

Fíjate en que, en este patrón, básicamente descartamos el primer grupo de captura, ya que queremos utilizar siempre https.

Mapa del sitio XML

Los mapas de sitio son una herramienta esencial que permite a los motores de búsqueda indexar mejor tu sitio web. Básicamente, son una lista de todas las páginas de tu sitio (piensa en ellos como una «chuleta» para los motores de búsqueda). Puede parecer un archivo sencillo de crear, ¿verdad?… pero… en la era de los sitios web dinámicos, en realidad es bastante complicado. Verás, una página en Rock puede representar cientos o miles de páginas para un visitante. Por ejemplo, la página «Series de mensajes» es una sola página en Rock, pero carga dinámicamente el nombre y la imagen de cada serie que hayas realizado jamás.

El complemento Web Agility ofrece una tarea que te permite realizar un rastreo de tu sitio web para generar un archivo sitemap.xml para un sitio Rock seleccionado. A continuación se muestra una captura de pantalla de la configuración de la tarea.

Configuración

A continuación se detallan los parámetros correspondientes a cada configuración de este trabajo.

  • Sitio web: el sitio web para el que quieres crear el mapa del sitio.
  • Comprimir archivo: determina si deseas que el proceso comprima el mapa del sitio por ti utilizando gzip. Se recomienda hacerlo así en el caso de mapas del sitio de gran tamaño.
  • Nombre de usuario y contraseña: estos ajustes te permiten introducir un nombre de usuario y una contraseña para que el rastreador los utilice al encontrar las páginas de tu sitio web. Por lo general, no utilizarás estos ajustes, ya que los motores de búsqueda no podrán acceder a las páginas que encuentren, pero están ahí por si los necesitas.

Resultados

Una vez que se haya ejecutado la tarea, encontrarás el mapa del sitio en «~/Content/Sitemaps/site-3-sitemap.xml». Ten en cuenta que el «3» es el identificador del sitio que seleccionaste en la tarea. Si has optado por comprimir el archivo, tendrá una extensión adicional «.gz» después de «.xml».

Ahora puedes enviar la URL de este archivo a los motores de búsqueda que elijas. Consulta este artículo para obtener más detalles: https://yoast.com/help/submit-sitemap-search-engines/

Consejos de configuración

A continuación te ofrecemos algunos consejos para configurar la indexación en tu sitio web. 

  1. Sitio web - Activa cada sitio web que quieras añadir al índice en Herramientas de administración > Configuración del CMS > Sitios. Edita la configuración avanzada del sitio para permitir la indexación.
  2. Páginas individuales - También puedes configurar páginas concretas para su rastreo en Herramientas de administración > Configuración del CMS > Páginas > Ajustes de la página > Ajustes avanzados
  3. Canales de contenido - Si alguna de tus páginas contiene contenido dinámico, es necesario habilitar los canales de contenido correspondientes para su indexación. Puedes comprobarlo accediendo a Herramientas de administración > Configuración del CMS > Canales de contenido dentro del sitio interno y consultando los detalles del canal.

Mapas del sitio y archivos robot.txt

Otra forma de compartir tu archivo de mapa del sitio es incluirlo en tu archivo robot.txt, situado en la carpeta raíz de tu servidor web. El problema es que un servidor web solo puede tener uno de estos archivos y cada archivo solo puede representar un sitio web (recuerda que Rock puede alojar sitios web y micrositios para ti). Pero no te preocupes, hemos creado una forma de tenerlo todo… ¡los archivos robot.txt dinámicos!

Los archivos dinámicos de robots se crean bajo demanda. Así es como funciona:

1. Activa los archivos dinámicos de robots en el complemento Redirector.

2. Esto redirigirá todas las solicitudes dirigidas a /robot.txt a una API REST personalizada en segundo plano.

3. Esta API REST analizará la URL y la asociará a un sitio en Rock. A continuación, creará un archivo robot.txt para ese sitio buscando un archivo «site-3-sitemap.xml(.gz)» en la carpeta «~/Contents/».

Es posible que algunos de los webmasters más avispados estén pensando: «Pero un archivo robot.txt es algo más que el mapa del sitio; ¿qué pasa con todas las demás reglas que quizá quiera añadir al archivo?». Pues bien, también hemos pensado en eso… Al instalar el plugin, también hemos añadido un atributo «Robot Rule» al sitio en Rock. Todo lo que añadas a ese atributo también se incluirá en tu archivo robot.txt dinámico.

Consejo

Hay algunos trucos más sobre los mapas de sitio en la sección «Encabezados de respuesta» que aparece a continuación…

Módulo de encabezados de respuesta

El módulo «Response Header» te permite añadir encabezados a tus objetos de respuesta HTTP que se envían a los navegadores web de tus visitantes. Puede que esto no parezca muy interesante, pero en realidad tiene aplicaciones útiles. Los encabezados de respuesta son los que facilitan el almacenamiento en caché en la web. Aunque Rock te permite ajustar estos encabezados en muchos sitios, hay algunas áreas en las que Rock no puede proporcionar los encabezados. Este módulo te permite escribir reglas potentes para añadir estos encabezados de caché. Esto resulta muy útil cuando añades una red de distribución de contenidos (CDN) a tu sitio web.

Configuración

Una vez instalado, encontrarás este módulo en «Herramientas de administración > Complementos instalados > Web Agility > Reglas de encabezados de respuesta». Al hacer clic en el enlace, accederás a una lista de reglas configuradas.

Si haces clic en una regla, accederás a los detalles de dicha regla.

Analicemos la configuración de una regla de encabezado.

  1. Nombre: el nombre descriptivo de la regla.
  2. Está activoEstá bastante claro lo que hace, ¿no?
  3. Criterios de coincidencia
    1. Patrón de URL de origen: es el patrón de coincidencia que se utiliza para evaluar la URL y determinar si se debe añadir el encabezado.
    2. Tipo de comparación de fuentes – Esto determina cómo debe evaluarse la coincidencia. Las opciones disponibles son:
      1. Empieza por
      2. Termina con
      3. Contiene
      4. Expresión regular
    3. Comparación con distinción entre mayúsculas y minúsculas: determina si la coincidencia debe tener en cuenta las mayúsculas y minúsculas de la URL.
  4. Configuración del encabezado
    1. Nombre del encabezado: el nombre del encabezado.
    2. Valor de la cabecera: el valor de la cabecera.
    3. Sobrescribir el valor existente: a menudo, es posible que el encabezado ya exista cuando llega al módulo. Esto te permite decidir si deseas sustituir el valor en caso de que ya exista.

Ejemplos

Un ejemplo habitual de caso de uso podría ser añadir un encabezado de caché a las solicitudes de imágenes estáticas en tu servidor web. El patrón de expresión regular para ello sería:

(https?:\/\/.*\.(?:png|jpg|gif|svg))

A continuación, deberías añadir el encabezado «Cache-Control» con un valor del tipo «public max-age=3600».

Encabezados del mapa del sitio

Un consejo extra para que tus mapas de sitio sean aún más eficaces… Los mapas de sitio te permiten añadir información adicional sobre una página. Esto incluye una indicación sobre la frecuencia con la que se actualiza una página y la importancia que tiene esa página para tu sitio web. Hemos incorporado la posibilidad de añadir estas propiedades a tu mapa de sitio mediante la inclusión de encabezados en las páginas. A continuación encontrarás detalles sobre estos encabezados específicos de Rock:

  • x-frecuencia-de-actualización – Los valores válidos para este encabezado son los siguientes:
    • Siempre
    • Por hora
    • Diario
    • Semanal
    • Mensual
    • Anual
    • Nunca
  • x-priority: puede ser un número decimal comprendido entre 0,0 y 1,0, siendo 1 el valor más importante (el valor por defecto es 0,5).

Módulo de encabezados de solicitud

El módulo «Request Header» permite añadir encabezados a las solicitudes HTTP entrantes. Este módulo funciona de forma casi idéntica al módulo «Response Header» descrito en la sección anterior, con el mismo tipo de reglas y opciones de configuración, por lo que aquí solo lo describiremos brevemente.

Configuración

Una vez instalado, encontrarás este módulo en «Herramientas de administración > Complementos instalados > Web Agility > Reglas de encabezados de solicitud». Al hacer clic en el enlace, accederás a una lista de reglas configuradas. Desde aquí, verás que la configuración de las reglas es idéntica a la descrita en la sección anterior. La única diferencia es que estos encabezados se añaden a las solicitudes HTTP entrantes, en lugar de a tus respuestas HTTP salientes.