Web e tecnologia

Arquivo _headers no Cloudflare Pages: cache, segurança e noindex

Por Edgar Jaimes 4 min de leitura

Código de programação visto de perto em uma tela

Aprenda a usar o arquivo _headers do Cloudflare Pages para controlar cache, segurança e noindex no seu site, com seus limites reais e os erros que você deve evitar.

Você publica seu site novo numa segunda-feira. Na terça, busca o nome do seu negócio no Google e, entre os resultados, aparece um endereço estranho terminado em pages.dev com o mesmo conteúdo do seu domínio. Ninguém o criou de propósito, mas ele está ali, competindo com você.

Existe uma forma simples de evitar isso e, de quebra, melhorar a velocidade e a segurança: um arquivo de texto de poucas linhas chamado _headers.

O que é o arquivo _headers no Cloudflare Pages?

É um arquivo de texto simples, sem extensão, onde você define cabeçalhos HTTP que o Cloudflare Pages adiciona às respostas do seu site. Segundo a documentação da Cloudflare, ele deve ficar no diretório de arquivos estáticos do seu projeto (em frameworks como o Astro, a pasta public/) e a Cloudflare o processa sem publicá-lo como mais um arquivo.

Os cabeçalhos são instruções invisíveis que viajam com cada página: dizem ao navegador quanto guardar em cache, ao Google se deve indexar algo, ou quais permissões a página tem. Se você já migrou seu site como explicamos no guia de migração do WordPress para o Cloudflare Pages, este é o próximo ajuste fino.

Armários de servidores com cabos de rede coloridos
Os cabeçalhos são aplicados na entrega de cada resposta, antes de ela chegar ao visitante. Foto: Unsplash

Como se escreve uma regra?

A primeira linha é o caminho (ou um padrão) e as linhas recuadas abaixo são pares nome: valor. Um exemplo baseado na documentação:

/secure/page
  X-Frame-Options: DENY
  X-Content-Type-Options: nosniff

/static/*
  Access-Control-Allow-Origin: *

Estas são as peças que você precisa conhecer:

ElementoO que fazDetalhe da documentação
* (splat)Corresponde a todos os caracteresSomente um por URL; reutilizado como :splat
:nome (placeholder)Captura uma parte do caminhoCada nome pode ser referenciado apenas uma vez
! NomeRemove um cabeçalhoEscreva o nome com ! na frente
Várias regras correspondemOs cabeçalhos são somadosSe um se repete, os valores são unidos com vírgula

Quais cabeçalhos vale a pena configurar?

Três usos cobrem quase todos os casos de um site corporativo: cache, segurança e controle de indexação.

Para o cache, a documentação mostra uma regra para arquivos com impressão digital no nome (os que mudam de nome quando mudam de conteúdo): Cache-Control: public, max-age=31556952, immutable sobre /static/*. Assim o navegador não volta a pedir esses arquivos. Isso soma ao que explicamos no guia de velocidade do site e Core Web Vitals.

Para a segurança, a Cloudflare exemplifica regras com X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy e Content-Security-Policy. Comece pelos mais simples e teste seu site depois de cada mudança: uma política de conteúdo rígida demais pode quebrar scripts ou fontes de que você precisa.

Atenção: copiar uma política de segurança de outro site sem testá-la é a forma mais rápida de quebrar sua própria página. Adicione um cabeçalho por vez e verifique se tudo carrega.

Como evito que meu endereço pages.dev apareça no Google?

Adicione uma regra que coloque X-Robots-Tag: noindex no endereço pages.dev do seu projeto. É um exemplo da própria documentação da Cloudflare: o caminho é https://:project.pages.dev/*, com esse cabeçalho abaixo.

O Google explica em sua documentação sobre robots meta e X-Robots-Tag que qualquer regra válida em uma meta tag robots também funciona neste cabeçalho, e que é a opção recomendada para arquivos que não são HTML, como PDFs ou imagens.

Erro comum: bloquear no robots.txt a URL que você quer desindexar. O Google só vê o noindex se puder rastrear a página; se o robots.txt a bloqueia, a regra é ignorada. Se você usa o robots.txt para bots de IA, confira também nosso guia de robots.txt e bots de IA.

Quais limites e regras de prioridade ele tem?

O máximo é de 100 regras, com um teto de 2.000 caracteres por linha. Além disso, três regras de comportamento evitam surpresas:

  • Os redirecionamentos do _redirects são aplicados antes dos cabeçalhos, então um redirecionamento prevalece sobre uma regra do _headers. Na documentação de redirecionamentos o código padrão é 302 e são aceitos 301, 302, 303, 307 e 308.
  • Os cabeçalhos do _headers substituem os valores padrão que a Cloudflare envia.
  • Não são aplicados a respostas geradas por Pages Functions. Se seu projeto as usa, defina os cabeçalhos dentro do código da Function.
Linhas de código HTML de um modelo de site em uma tela escura
Um arquivo curto, mas com efeito em todas as páginas do site. Foto: Unsplash

Como verifico que funciona?

Publique a mudança e verifique os cabeçalhos reais da resposta, não apenas o arquivo. No navegador, abra as ferramentas de desenvolvedor, aba Rede, selecione a página ou o arquivo e veja os cabeçalhos de resposta. Se faltar algum, revise o recuo, se o caminho corresponde e se não há um redirecionamento ou uma Function interferindo.

Depois, peça ao Google que rastreie de novo o que você mudou pelo Search Console, como explica o guia de Search Console e sitemap. E se você ainda não sabe o que inclui o plano da Cloudflare que usa, aqui está o guia do plano grátis.

Em resumo

Aquele endereço pages.dev que aparecia ao lado do seu domínio se resolve com três linhas em um arquivo de texto. _headers é uma das melhorias mais baratas que você pode fazer em um site estático: melhor cache, segurança básica e controle do que o Google indexa. Se quiser que a gente deixe isso configurado e testado no seu site, conheça nosso serviço de hospedagem e domínios.

Perguntas frequentes

Onde fica o arquivo _headers em um projeto Astro?

Na pasta public/, junto com seus outros arquivos estáticos. Ao construir o site ele é copiado para a saída, e o Cloudflare Pages o lê sem servi-lo como arquivo.

Quantas regras o _headers aceita?

Segundo a documentação da Cloudflare, no máximo 100 regras, e cada linha pode ter até 2.000 caracteres contando espaços, nome e valor do cabeçalho.

Posso evitar que meu endereço pages.dev apareça no Google?

Sim. A própria documentação da Cloudflare propõe uma regra para https://:project.pages.dev/* com o cabeçalho X-Robots-Tag: noindex.

O _headers funciona se eu usar Pages Functions?

Não para as respostas geradas por uma Function. Nesse caso, os cabeçalhos são definidos dentro do código da Function.

O que acontece se uma URL tem uma regra do _headers e um redirecionamento?

O redirecionamento é aplicado primeiro, então ele prevalece sobre a regra de cabeçalhos.

Não fique só na teoria: aplique no seu negócio

Implementamos hospedagem e domínios de ponta a ponta, com a sua operação real. A primeira conversa não tem custo.

Continue lendo