# Como corrigir o sitemap do Rank Math quebrado pelo cache do WP Rocket

O sitemap do Rank Math quebra quando o WP Rocket guarda uma cópia estática do sitemap_index.xml ou aplica minificação de HTML, CSS e JS sobre a saída XML. A correção é excluir o caminho do sitemap do cache e do minify do WP Rocket e limpar o cache.

## O que é sitemap do Rank Math quebrado pelo cache do WP Rocket?

O sitemap do Rank Math quebrado pelo cache do WP Rocket acontece quando o WP Rocket trata o sitemap_index.xml como uma página HTML comum: guarda uma versão estática no diretório de cache e aplica as otimizações de minificação sobre a resposta. O Rank Math gera o índice em sitemap_index.xml junto com uma folha de estilo XSL (o arquivo de transformação que deixa o sitemap legível no navegador) e sub-sitemaps por tipo de post; quando o WP Rocket entra no meio, o Googlebot e o visitante recebem um XML antigo, sem estilo ou com lixo de minificação antes da declaração XML.

Na prática são dois mecanismos distintos. O primeiro é o cache de página: o WP Rocket serve um sitemap_index.xml congelado de horas atrás, então posts novos não aparecem para o Google. O segundo é a minificação: ao processar o XSL e os scripts associados, o WP Rocket injeta caracteres ou remove a estrutura que o parser de XML espera, e o navegador acusa erro de declaração XML ou exibe a página sem formatação. Separar qual dos dois está ativo é o que leva à correção certa em vez do chute de desativar o plugin inteiro.

## Como identificar

- O sitemap_index.xml abre sem a folha de estilo do Rank Math: aparece o XML cru, sem a tabela azul de URLs que o Rank Math normalmente mostra
- O navegador exibe o erro "XML Parsing Error: XML or text declaration not at the start of entity" ao abrir o sitemap com o WP Rocket ativo
- Posts e páginas publicados há horas não aparecem no sitemap_index.xml, mas surgem assim que você limpa o cache do WP Rocket
- No Search Console o sitemap fica em "Couldn't fetch" ou "Sitemap could not be read", enquanto o arquivo abre normalmente para você com o cache já quente
- Ao testar domínio.com/?sitemap=1 o sitemap vem correto e atualizado, mas a URL amigável sitemap_index.xml vem antiga ou sem estilo
- O problema some quando você desativa o WP Rocket e volta a aparecer poucos minutos depois de reativar, quando o cache do sitemap é regerado

**Antes de começar:** Faça backup das configurações do WP Rocket antes de alterar as regras de cache e minify. Elas ficam na option wp_rocket_settings e um backup permite reverter caso a exclusão do sitemap afete outra otimização do site.

## Como prevenir

- Logo após instalar o WP Rocket, adicione o caminho do sitemap ao campo Never Cache URL(s) para o índice nunca ser servido estático ao Googlebot
- Mantenha o sitemap.xsl fixo nas listas de exclusão de CSS e JS do WP Rocket para que novas otimizações nunca removam a folha de estilo do sitemap
- Depois de publicar um lote grande de posts, limpe o cache do WP Rocket e confira o sitemap_index.xml em janela anônima antes de aguardar o rastreamento do Google
- Ao atualizar o WP Rocket ou o Rank Math, valide o sitemap em janela anônima com cache limpo, pois uma nova versão pode reativar o Minify HTML sobre o XML

Erros relacionados

- [Como corrigir problemas de indexação do sitemap Rank Math no Google](https://full.services/wp-fixer/corrigir-indexacao-sitemap-rank-math/)
- [Como corrigir o erro de sitemap preload no WP Rocket](https://full.services/wp-fixer/corrigir-sitemap-wp-rocket/)
- [Como corrigir a exclusão de páginas do cache no WP Rocket](https://full.services/wp-fixer/corrigir-exclusao-cache-wp-rocket/)

## Causa

- O cache de página do WP Rocket guarda uma cópia estática do sitemap_index.xml no diretório wp-content/cache/wp-rocket e serve essa versão congelada para o Googlebot, sem refletir os posts publicados depois.
- A opção Minify HTML (aba File Optimization) processa a saída do sitemap_index.xml e da folha XSL, removendo quebras de linha que o parser de XML exige e gerando o erro de declaração XML fora do início.
- As opções Minify/Combine CSS e Minify/Combine JS atuam sobre o sitemap.xsl que estiliza o sitemap, deixando o sitemap_index.xml sem a tabela visual e exibindo só o XML cru no navegador.
- O caminho do sitemap não está no campo Never Cache URL(s) (aba Advanced Rules), então o WP Rocket nunca foi instruído a deixar o sitemap_index.xml fora do cache de página.
- O Remove Unused CSS ou o Load CSS Asynchronously remove a referência ao sitemap.xsl, e o navegador renderiza o índice sem a folha de estilo de transformação.
- O cache interno do próprio Rank Math também guarda o índice, então mesmo após purgar o WP Rocket o sitemap_index.xml volta antigo até a regeneração do Rank Math.

## Como resolver

1. Confirme que a causa é o WP Rocket comparando a query crua: Antes de mexer em qualquer ajuste, descubra se o estrago vem do cache ou do minify. Abra as duas URLs em uma janela anônima e compare. Se a query crua vem certa e com estilo, mas a URL amigável vem antiga ou sem a tabela azul, o culpado é o WP Rocket.

```
https://seudominio.com/?sitemap=1
https://seudominio.com/sitemap_index.xml
```

2. Exclua o sitemap do cache de página no Advanced Rules: No painel, vá em Settings -> WP Rocket -> Advanced Rules e localize o campo Never Cache URL(s). Cole, uma por linha, os padrões que cobrem o índice e os sub-sitemaps. O WP Rocket passa a entregar sempre o XML gerado na hora pelo Rank Math em vez da cópia estática.

```
/sitemap_index.xml
/.*sitemap.*.xml
/sitemap.xsl
```

3. Tire o sitemap da minificação de HTML, CSS e JS: Vá em Settings -> WP Rocket -> File Optimization. Se o erro é XML declaration not at the start of entity, desligue o Minify HTML, pois ele quebra a estrutura do XML. Para o sitemap sem estilo, exclua o sitemap.xsl da combinação e minificação de CSS e JS para preservar a folha de transformação.

```
File Optimization -> CSS Files -> Excluded CSS Files: sitemap.xsl
File Optimization -> JavaScript Files -> Excluded JavaScript Files: sitemap.xsl
File Optimization -> desmarcar Minify HTML se o erro for de declaração XML
```

4. Limpe o cache do WP Rocket e regenere o sitemap do Rank Math: Volte em Settings -> WP Rocket -> Dashboard e clique em Clear and preload cache para descartar a cópia estática antiga. Depois force o Rank Math a remontar o índice reabrindo e salvando as configurações de sitemap, e confirme que os tipos de post estão marcados.

```
Settings -> WP Rocket -> Dashboard -> Clear and preload cache
Rank Math SEO -> Sitemap Settings -> Geral -> reabrir e salvar
```

5. Se o XML antigo persistir, desligue o cache do sitemap no Rank Math: Quando a cópia estática insiste em voltar mesmo após a purga, desative o cache interno do sitemap do Rank Math pelo filtro do passo de código. Assim o Rank Math monta o sitemap_index.xml a cada requisição e o WP Rocket, já com a URL excluída, repassa essa saída fresca ao Google.

## Código

```php
<?php
// functions.php do tema ativo (ou um mu-plugin).
// Desliga o cache interno do sitemap do Rank Math quando o WP Rocket
// insiste em servir um sitemap_index.xml estático e desatualizado.
add_filter( 'rank_math/sitemap/enable_caching', '__return_false' );
```

## Perguntas frequentes

### Por que o sitemap_index.xml aparece sem estilo só depois que ativo o WP Rocket?

Porque o WP Rocket minifica ou combina o sitemap.xsl, que é a folha de estilo que transforma o XML na tabela visual do Rank Math. Sem ela, o navegador mostra o XML cru. Excluir o sitemap.xsl das listas de CSS e JS do WP Rocket devolve o estilo ao sitemap.

### O que significa o erro XML declaration not at the start of entity no sitemap?

Significa que algo foi enviado antes da declaração XML, em geral pela minificação de HTML do WP Rocket atuando sobre o sitemap_index.xml. Desligar o Minify HTML ou excluir o caminho do sitemap do cache resolve, pois o XML volta a sair limpo do Rank Math.

### Preciso desativar o WP Rocket inteiro para o sitemap voltar a funcionar?

Não. Basta adicionar o caminho do sitemap ao campo Never Cache URL(s) em Advanced Rules e excluir o sitemap.xsl da minificação. Assim você mantém o cache e o ganho de velocidade no restante do site sem quebrar o sitemap do Rank Math.

### Por que o Google reporta Couldn't fetch se o sitemap abre normal para mim?

Porque o Googlebot recebe a versão em cache do WP Rocket, que pode estar antiga ou sem o XML válido, enquanto você vê a cópia já regenerada. Excluir o sitemap do cache faz o Googlebot receber sempre a saída fresca do Rank Math e o status volta a Success.

### Como excluo o sitemap do cache do WP Rocket sem mexer no resto?

Vá em Settings -> WP Rocket -> Advanced Rules e cole o padrão do sitemap no campo Never Cache URL(s), uma URL por linha. Esse campo isola só o sitemap do cache de página e não afeta as demais URLs nem as otimizações ativas do site.

### Depois de excluir o sitemap, ainda preciso limpar o cache?

Sim. A cópia estática antiga continua no diretório de cache até você purgar. Clique em Clear and preload cache no Dashboard do WP Rocket para descartar a versão congelada e forçar o WP Rocket a respeitar a nova regra de exclusão do sitemap.

### O cache do próprio Rank Math também pode guardar o sitemap antigo?

Pode. O Rank Math mantém um cache interno do índice. Quando o XML antigo volta mesmo após purgar o WP Rocket, aplique o filtro rank_math/sitemap/enable_caching retornando falso para o Rank Math montar o sitemap a cada requisição, ao custo de um pouco mais de processamento.

### A regra Never Cache URL(s) aceita curinga para pegar todos os sub-sitemaps?

Sim. O WP Rocket interpreta o campo como expressão e aceita padrões como uma linha cobrindo qualquer arquivo .xml de sitemap. Isso garante que tanto o índice quanto os sub-sitemaps por tipo de post fiquem fora do cache de página de uma vez.

**Fonte:** [Rank Math — How to Fix Sitemap Issues](https://rankmath.com/kb/fix-sitemap-issues/)
