Como corrigir o sitemap do Rank Math quebrado pelo cache do WP Rocket
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
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
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
- 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 - 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 - 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 - 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 - 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.
<?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' );














