X-Robots-Tag
La X-Robots-Tag es una forma de controlar el rastreo y la indexación de los motores de búsqueda mediante cabeceras de respuesta HTTP. En lugar de colocar <meta name="robots"> dentro del HTML, el servidor envía las mismas directivas en una cabecera de respuesta como X-Robots-Tag: noindex.
La X-Robots-Tag es una forma de controlar el rastreo y la indexación de los motores de búsqueda mediante cabeceras de respuesta HTTP. En lugar de colocar <meta name="robots"> dentro del HTML, el servidor envía las mismas directivas en una cabecera de respuesta como X-Robots-Tag: noindex.
Por qué importa
Las metaetiquetas HTML solo funcionan dentro de archivos HTML. Los recursos que no son HTML (PDF, imágenes, vídeos, respuestas de API en JSON) no pueden usar etiquetas <meta>, lo que deja un vacío en el control de la indexación. La X-Robots-Tag cubre ese vacío al aplicarse a cualquier respuesta HTTP. Search Engine Land ha documentado casos de comercio electrónico en los que decenas de miles de catálogos en PDF se indexaron y perjudicaron el posicionamiento como contenido duplicado, resuelto de una sola vez con la X-Robots-Tag.
X-Robots-Tag frente a meta robots frente a robots.txt
| Método | Ubicación | Alcance | ¿Bloquea el rastreo? |
|---|---|---|---|
| robots.txt | /robots.txt | Patrones de URL | Sí, bloquea el rastreo en sí |
| Meta robots | <head> del HTML | Esa página HTML | No, solo controla la indexación |
| X-Robots-Tag | Cabecera de respuesta HTTP | Cualquier tipo de recurso | No, solo controla la indexación |
Distinción crítica: robots.txt dice "no rastrees", mientras que la meta robots y la X-Robots-Tag dicen "no indexes". Para bloquear la indexación, Googlebot debe llegar realmente a la página para leer la directiva. Bloquear en robots.txt detiene el rastreo por completo, así que Google nunca ve la instrucción de indexación.
Directivas principales
| Directiva | Significado |
|---|---|
noindex | No mostrar en los resultados de búsqueda |
nofollow | No seguir los enlaces de la página |
none | Igual que noindex, nofollow |
noarchive | No mostrar una copia en caché en las SERP |
nosnippet | No mostrar fragmentos ni miniaturas |
unavailable_after: [date] | Eliminar del índice tras la fecha |
max-snippet: [n] | Limitar la longitud del fragmento |
max-image-preview: [setting] | Limitar el tamaño de la vista previa de la imagen |
max-video-preview: [n] | Limitar la duración de la vista previa del vídeo |
Para el control de fragmentos dentro de una página HTML, usa data-nosnippet en el elemento exacto que quieras excluir de los fragmentos de búsqueda. Esto es diferente de la X-Robots-Tag porque oculta únicamente el texto seleccionado en lugar de cambiar el estado de indexación de todo el recurso.
Ejemplos de configuración
Bloquear la indexación de PDF (Apache .htaccess):
<FilesMatch "\.pdf$">
Header set X-Robots-Tag "noindex, nofollow"
</FilesMatch>
Bloquear un directorio de imágenes (Nginx):
location /private-images/ {
add_header X-Robots-Tag "noindex";
}
Apuntar a un rastreador específico (solo Googlebot):
X-Robots-Tag: googlebot: noindex
Indexación con límite de tiempo:
X-Robots-Tag: unavailable_after: 31 Dec 2026 23:59:59 GMT
Exclusión de fragmento a nivel de elemento (HTML):
<p data-nosnippet>No mostrar esta frase en los fragmentos de Google.</p>
Aspectos prácticos a tener en cuenta
No lo combines con disallow de robots.txt: Si robots.txt bloquea la URL, Google no puede leer la cabecera en absoluto. Para bloquear la indexación, permite el rastreo en robots.txt y usa noindex en la X-Robots-Tag.
Requiere configuración del servidor: A diferencia de las metaetiquetas, la X-Robots-Tag se configura a nivel del servidor web (Apache, Nginx, Cloudflare Workers). Las plataformas CMS no siempre la gestionan de forma automática.
Verifícala con Search Console o curl: Comprueba que la cabecera aparece realmente con la herramienta de inspección de URL de Google Search Console o con curl -I https://example.com/file.pdf.
Los controles de fragmentos no son controles de privacidad: nosnippet y data-nosnippet cambian cómo muestra Google un resultado, pero el contenido subyacente sigue siendo de acceso público. Usa autenticación o control de acceso del lado del servidor para el contenido privado.
Sources: