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:
- Criterios de coincidencia: qué hay que tener en cuenta en una solicitud web para que se active una regla concreta.
- 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:
. significa cualquier carácter* significa cualquier número del carácter anterior- Entonces,
.* significa cualquier número de cualquier carácter - 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:
- http://www.mysite.com/blog
- http://www.mysite.com/blog/
La expresión siguiente coincidiría con cualquiera de las siguientes opciones:
.*\/blog[\/]?$
La lógica es la siguiente:
- Empieza por lo que sea
(.*) - Entonces tiene
/blog - Y podría llevar una barra al final, si se desea
([\/]) - 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:
- Empieza por «http://»
(http:\/\/) - Entonces tiene un número cualquiera de caracteres
(.*) - Entonces tiene /blog/
(\/blog\/) - A continuación, puede haber cualquier número de caracteres hasta el final
(.*)
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.
- 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.
- 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 - 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…
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.
- Nombre: el nombre descriptivo de la regla.
- Está activo – Está bastante claro lo que hace, ¿no?
- Criterios de coincidencia
- 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.
- Tipo de comparación de fuentes – Esto determina cómo debe evaluarse la coincidencia. Las opciones disponibles son:
- Empieza por
- Termina con
- Contiene
- Expresión regular
- 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.
- Configuración del encabezado
- Nombre del encabezado: el nombre del encabezado.
- Valor de la cabecera: el valor de la cabecera.
- 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».
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).
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.