Dos formas de decirle a Google que no indexe una página: la etiqueta meta robots en el HTML, o la X-Robots-Tag en el encabezado de respuesta HTTP. Hacen el mismo trabajo. No son intercambiables. Elegir la correcta depende de qué es el archivo (HTML vs PDF vs imagen), dónde puedes editar (plantilla vs configuración del servidor) y si la necesitas a escala (una página vs diez mil).
Los dos mecanismos en una oración cada uno
etiqueta meta robots: <meta name="robots" content="noindex, nofollow"> en el <head> de un documento HTML. Funciona solo en páginas HTML porque no hay equivalente en PDF / imagen / metadatos JSON. Fácil de agregar a través de la plantilla de la página.
X-Robots-Tag: X-Robots-Tag: noindex, nofollow como encabezado de respuesta HTTP. Funciona en cualquier tipo de recurso que devuelva el servidor — HTML, PDF, imagen, video, JSON, cualquier cosa. Se configura en el servidor (Apache, Nginx, encabezados edge de Vercel, Cloudflare Workers) o a través de la API de respuesta del framework.
Cuándo la etiqueta meta robots es la opción correcta
- Exclusión de una sola página: una página específica que quieres que no sea indexada. Agrega la etiqueta meta a la plantilla de esa página, despliega el cambio.
- Páginas controladas por plantilla: cuando la decisión de noindex se toma por tipo de página (por ejemplo, todas las páginas /thank-you/ deben tener noindex). Añade la etiqueta meta dentro de la plantilla de diseño que usan esas páginas.
- Decisiones dinámicas: cuando noindex depende de datos en tiempo de ejecución (por ejemplo, noindex en páginas con menos de 200 palabras). La etiqueta meta se renderiza condicionalmente en la plantilla.
- Cuando no tienes acceso a la configuración del servidor: hosting compartido, CMS bloqueado, deploy de agencia donde puedes editar plantillas pero no htaccess. La etiqueta meta es tu única opción.
Cuándo X-Robots-Tag es la opción correcta
- Recursos no HTML: PDFs, imágenes, endpoints JSON, sitemaps. No puedes añadir una etiqueta meta a un PDF. X-Robots-Tag en la respuesta HTTP es la única forma.
- Exclusión basada en patrones: "noindex todo bajo /admin/*" o "noindex cada archivo .pdf". Configúralo una vez en el servidor, se aplica a cada URL coincidente para siempre. Mucho más limpio que editar 200 plantillas.
- Exclusión a gran escala: 10,000 URLs generadas dinámicamente que no deben indexarse. Un único bloque location de Nginx supera un condicional a nivel de plantilla.
- Cuando quieres defensa en profundidad: combina X-Robots-Tag en el servidor con robots meta en la plantilla. Cualquiera de las dos capas detecta el noindex; ambas capas significan que un bug en la plantilla no puede re-indexar accidentalmente la página.
Qué pueden establecer ambas
Ambos mecanismos aceptan el mismo conjunto de directivas. Las más comunes: noindex (no indexar), nofollow (no seguir enlaces de esta página), none (= noindex, nofollow), noarchive (no mostrar versión en caché), nosnippet (no mostrar snippet en SERP), max-snippet:N (limitar longitud del snippet), max-image-preview:standard|large|none (controlar vistas previas de imágenes en IA Overviews — relevante para trabajo GEO en 2026), max-video-preview:N (limitar longitud de vista previa de video), unavailable_after:date (auto-noindex después de una fecha).
Google lee las mismas directivas sin importar qué mecanismo las entrega. La elección del mecanismo se trata de escala y tipo de recurso, no de soporte de directivas.
Cómo configurar X-Robots-Tag en plataformas comunes
Vercel (vercel.json)
Usa un bloque [[headers]] con un patrón source y una entrada values para X-Robots-Tag. Ejemplo: [[headers]] source = "/admin/(.*)" [[headers.values]] X-Robots-Tag = "noindex, nofollow". Se aplica a cada URL que coincida con el patrón.
Netlify (netlify.toml)
Bloque [[headers]] con un glob path y values.X-Robots-Tag configurado. Ejemplo: [[headers]] for = "/admin/*" [headers.values] X-Robots-Tag = "noindex, nofollow".
Apache (.htaccess)
<FilesMatch "\.pdf$"> Header set X-Robots-Tag "noindex, nofollow" </FilesMatch> para coincidencia de patrones de archivo. O usa <Location /admin> Header set X-Robots-Tag "noindex, nofollow" </Location> para coincidencia de rutas.
Nginx
location ~ /admin/ { add_header X-Robots-Tag "noindex, nofollow"; } dentro del bloque server. El location ~ coincide por regex; usa location ^~ para coincidencia solo por prefijo.
Cloudflare Workers / Edge
Modifica los encabezados de respuesta en el script del worker: response.headers.set('X-Robots-Tag', 'noindex, nofollow'). Útil para sitios donde el servidor de origen no puede emitir fácilmente el encabezado.
Verificar que el encabezado está configurado
curl -I https://example.com/page devuelve todos los encabezados de respuesta incluyendo X-Robots-Tag. Busca la línea X-Robots-Tag en la salida. Si falta, el encabezado no está siendo configurado.
Para la verificación en Search Console: la herramienta de Inspección de URL muestra las directivas que Google detectó tanto de la meta etiqueta como del encabezado HTTP. Si cualquiera de las dos capas establece noindex, Google no indexa nada. Vale la pena verificar ambas capas porque un CDN mal configurado puede eliminar encabezados silenciosamente.
El patrón de defensa en profundidad
La configuración de producción más sólida usa ambas. X-Robots-Tag a nivel de servidor para el patrón de ruta (por ejemplo, /admin/*) más meta robots a nivel de plantilla en el <head> de la página para las mismas páginas. Dos capas significa que un error en la plantilla o una configuración incorrecta del CDN no pueden reindexar accidentalmente páginas que deberían ser privadas.
Así es como está configurada la sección de administrador de este sitio: vercel.json establece X-Robots-Tag: noindex, nofollow en /admin/*, Y la plantilla AdminLayout emite <meta name="robots" content="noindex, nofollow"> en el head. A prueba de todo.
Errores comunes
- Agregar noindex a una página que ya está bloqueada por robots.txt. Disallow en robots.txt impide que Googlebot obtenga la página en absoluto, por lo que nunca ve la directiva noindex. La página puede terminar indexada sin fragmento porque Google vio la URL en otro lugar pero no puede obtenerla. Elimina la regla Disallow para que el bot pueda obtener + ver el noindex.
- Establecer noindex a través de meta tag en HTML renderizado con JavaScript. Algunos bots ejecutan JS, otros no. La opción segura es renderizar noindex del lado del servidor, O un X-Robots-Tag en el encabezado HTTP que no requiera ejecución de JS.
- Establecer noindex en una página que tiene backlinks. Google respetará noindex pero el link equity de esos backlinks se desperdicia. Es mejor hacer un 301 de la página a una URL relacionada que absorba el equity.
- Olvidar que X-Robots-Tag es por-respuesta, no por-servidor. Los cache hits de CDN a veces eliminan encabezados personalizados; verifica con curl después de desplegar.
El resumen
robots meta tag: por-página, en el HTML, edita a nivel de template. X-Robots-Tag: por-respuesta, en el encabezado HTTP, edita a nivel de servidor. Ambos funcionan para HTML; solo X-Robots-Tag funciona para no-HTML. Usa ambos cuando noindex es crítico.
Lectura relacionada: 410 vs 404 cubre el caso de retiro (URLs que desaparecen); 301 vs 302 vs 307 vs 308 cubre el caso de redirección (URLs que se mueven). Junto con noindex son las tres herramientas principales para decirle a Google qué hacer con una URL.