# Como corrigir a integração de CDN do WP Rocket que não funciona

WP Rocket CDN não funciona é quando a opção Content Delivery Network está ativa mas o plugin não reescreve as URLs dos arquivos estáticos, então imagens, CSS e JS continuam saindo pelo domínio do site. No código-fonte, os assets ainda apontam para o domínio principal, e não para o CNAME informado.

## O que é o WP Rocket CDN que não funciona?

A opção Content Delivery Network do WP Rocket reescreve as URLs dos arquivos estáticos (imagens, CSS e JS) presentes no HTML da página, trocando o domínio do site pelo CNAME da CDN, e ainda adiciona resource hints como preconnect e dns-prefetch para o domínio da CDN. Quando a integração funciona, o navegador baixa esses arquivos da rede de distribuição, mais perto do visitante, aliviando o servidor de origem.

Quando a integração não funciona, a opção aparece ligada mas as URLs no HTML continuam apontando para o domínio do site, ou apontam para o CNAME mas a CDN devolve erro. O resultado é que os arquivos não são entregues pela CDN: o ganho de latência some, e em alguns casos surgem imagens quebradas, CSS sem estilo ou avisos de mixed content. A causa quase nunca é um bug do plugin, e sim uma configuração que não casa entre o WP Rocket e o provedor da CDN.

## Como identificar

- No código-fonte da página (Ctrl+U), as URLs de imagens, .css e .js continuam apontando para o domínio do site, e não para o CNAME informado na aba Content Delivery Network.
- O painel do provedor de CDN registra zero requisições ou bandwidth muito baixo, mesmo com visitas chegando ao site.
- O navegador exibe aviso de mixed content e bloqueia arquivos servidos via http quando o site roda em https.
- Imagens não carregam ou a página perde o estilo (CSS sem efeito) logo após ativar a opção Content Delivery Network.
- Arquivos injetados via AJAX ou inseridos por JavaScript depois que a página carrega continuam saindo pelo domínio de origem, nunca pela CDN.

## Como prevenir

- Ao criar a zona na CDN, copie o CNAME direto do painel do provedor e cole no campo CDN CNAME(s) para evitar erro de digitação
- Mantenha o SSL/HTTPS habilitado na zona da CDN sempre que o site rodar em https, evitando mixed content
- Use a opção Exclude files from CDN apenas para arquivos específicos que realmente precisam sair pelo domínio de origem, nunca padrões amplos
- Limpe o cache do WP Rocket e purgue o cache da CDN após cada mudança de configuração ou de URL de assets
- Não combine o WP Rocket com a reescrita de URLs do WP Offload Media para não disputar o controle dos endereços dos arquivos

Erros relacionados

- [Como corrigir o WP Rocket que não gera cache](https://full.services/wp-fixer/corrigir-wp-rocket-nao-gera-cache/)
- [Como corrigir conflitos de cache entre WP Rocket e Elementor](https://full.services/wp-fixer/corrigir-conflito-cache-wp-rocket-elementor/)
- [Como corrigir o conflito entre Elementor e WP Rocket no WordPress](https://full.services/wp-fixer/corrigir-conflito-elementor-wp-rocket/)

## Causa

- CNAME divergente: o valor informado em CDN CNAME(s) na aba Content Delivery Network não é exatamente o domínio que o provedor de CDN entregou (erro de digitação, falta de subdomínio ou domínio sem o zone correto).
- CDN não configurada no provedor: a zona de pull não foi criada apontando para o domínio de origem, então o CNAME existe no WP Rocket mas não resolve nada do lado da CDN.
- Incompatibilidade de HTTPS: o site roda em https mas a CDN não serve via SSL/HTTPS, gerando mixed content e bloqueio dos arquivos pelo navegador.
- Arquivos carregados via AJAX ou inseridos por JavaScript após a montagem da página: o WP Rocket só reescreve o que está no HTML inicial, então esses assets nunca passam pela CDN.
- Regras de exclusão na opção Exclude files from CDN removendo tipos de arquivo que deveriam ser servidos (por exemplo um padrão /(.*).css excluindo todo o CSS).
- Conflito com o WP Offload Media (opção Rewrite Asset URLs ligada), que reescreve as URLs antes do WP Rocket e impede a reescrita da CDN e a minificação.

## Como resolver

1. Confirme se as URLs estão mesmo saindo pela CDN: Abra a página numa janela anônima, deslogado, e veja o código-fonte. Localize o endereço de uma imagem e de um arquivo de CSS e confira se eles começam pelo CNAME da CDN ou ainda pelo domínio do site. Se continuam no domínio do site, a reescrita não está acontecendo e o diagnóstico segue.

```
https://cdn.seudominio.com/wp-content/uploads/2026/01/imagem.jpg
https://www.seudominio.com/wp-content/uploads/2026/01/imagem.jpg
```

2. Cheque o CNAME na aba Content Delivery Network: Vá em WP Rocket -> Content Delivery Network, marque a opção Enable Content Delivery Network e confirme que o campo CDN CNAME(s) traz exatamente o domínio que o provedor de CDN entregou, sem espaços e sem barra final. O endereço precisa bater caractere por caractere com a zona criada na CDN.

```
cdn.seudominio.com
```

3. Garanta que a zona existe e responde no provedor: No painel da sua CDN (BunnyCDN, KeyCDN, StackPath e similares), confirme que existe uma pull zone apontando para o domínio de origem do site e que o CNAME está propagado no DNS. Teste abrir o arquivo direto pela CDN no navegador: se o endereço da CDN devolver 404 ou erro, o problema está na configuração do provedor, não no WP Rocket.

```
https://cdn.seudominio.com/wp-includes/js/jquery/jquery.min.js
```

4. Force HTTPS na CDN e resolva o mixed content: Se o site usa https, a CDN também precisa servir via https com certificado válido para o CNAME. Habilite o SSL da zona no provedor e garanta que o CNAME usa o esquema seguro. Sem isso, o navegador bloqueia os arquivos como mixed content e a página perde imagens e estilos.

```
https://cdn.seudominio.com/
```

5. Revise as exclusões e o conflito com WP Offload Media: Ainda na aba Content Delivery Network, abra Exclude files from CDN e remova qualquer padrão amplo demais que esteja tirando arquivos válidos da CDN. Se você usa o WP Offload Media, desligue a opção Rewrite Asset URLs dele, porque ela reescreve as URLs antes e impede a reescrita do WP Rocket.

```
/(.*).css
/(.*).js
```

6. Limpe o cache e teste novamente: Depois de qualquer ajuste, limpe o cache do WP Rocket para que as páginas sejam regeradas com as novas URLs e purgue o cache da própria CDN para descartar versões antigas dos arquivos. Em seguida repita o passo 1 numa janela anônima para confirmar que os assets agora saem pelo CNAME. Lembre que arquivos carregados via AJAX continuam fora da CDN por design.

## Código

```bash
# Diagnostico de CDN do WP Rocket pela linha de comando.
# Troque cdn.seudominio.com e www.seudominio.com pelos seus dominios.

# 1. O CNAME da CDN resolve no DNS?
# Deve devolver um registro CNAME ou os IPs da rede da CDN.
dig +short cdn.seudominio.com

# 2. A CDN entrega um asset real via HTTPS, com status 200?
# Use um arquivo que voce viu no codigo-fonte. Status 404 = zona mal configurada.
curl -I https://cdn.seudominio.com/wp-includes/js/jquery/jquery.min.js

# 3. As paginas ja estao reescrevendo para o CNAME?
# Conta quantas URLs apontam para a CDN no HTML da home.
curl -s https://www.seudominio.com/ | grep -o 'cdn.seudominio.com' | wc -l

# 4. Existe header de cache da CDN na resposta do asset?
# Procure por X-Cache, CF-Cache-Status ou similar conforme o provedor.
curl -sI https://cdn.seudominio.com/wp-includes/js/jquery/jquery.min.js | grep -i cache
```

## Perguntas frequentes

### Como sei se o WP Rocket está realmente servindo os arquivos pela CDN

Abra a página deslogado e veja o código-fonte com Ctrl+U. Pegue o endereço de uma imagem e de um arquivo de CSS e confira o início da URL. Se elas começam pelo CNAME da CDN, a reescrita funciona. Se ainda começam pelo domínio do site, a integração não está ativa para aqueles arquivos.

### Por que a opção Content Delivery Network está ligada mas nada vai para a CDN

O motivo mais comum é o CNAME informado não bater com a zona criada no provedor, ou a zona de pull nem existir do lado da CDN. Confirme o valor no campo CDN CNAME(s), crie ou ajuste a pull zone apontando para o domínio do site e teste abrir um arquivo direto pelo endereço da CDN.

### O que é o mixed content que aparece depois de ligar a CDN

É quando o site roda em https mas a CDN entrega os arquivos em http. O navegador bloqueia esse conteúdo inseguro e a página perde imagens e estilos. A correção é habilitar o SSL da zona no provedor de CDN e garantir que o CNAME seja acessado sempre via https.

### Por que algumas imagens continuam saindo pelo domínio do site mesmo com a CDN ativa

O WP Rocket só reescreve as URLs presentes no HTML inicial da página. Arquivos carregados via AJAX ou inseridos por JavaScript depois que a página monta não são reescritos, então continuam saindo pelo domínio de origem. Isso é uma limitação de design, não um erro de configuração.

### Preciso configurar algo na CDN além de informar o CNAME no WP Rocket

Sim. O CNAME no WP Rocket é só o apelido para onde as URLs apontam. No provedor de CDN você precisa criar uma pull zone que busca os arquivos do domínio do site, habilitar o SSL dessa zona e garantir que o CNAME esteja propagado no DNS. Sem a zona configurada, o WP Rocket reescreve para um endereço que não responde.

### Uma regra de exclusão pode estar tirando arquivos da CDN

Pode. O campo Exclude files from CDN aceita padrões e um padrão amplo como o que captura todos os arquivos de um tipo remove esses arquivos da CDN por completo. Revise a lista e mantenha apenas exclusões específicas para os arquivos que de fato precisam sair pelo domínio de origem.

### O WP Offload Media atrapalha a CDN do WP Rocket

Atrapalha quando a opção Rewrite Asset URLs do WP Offload Media está ligada, porque ela reescreve as URLs dos arquivos antes do WP Rocket e ainda impede a minificação de CSS e JS. Desligue essa reescrita no WP Offload Media e deixe a CDN sob controle do WP Rocket para os dois não disputarem os endereços.

### Preciso limpar o cache depois de mudar a configuração da CDN

Sim, e em dois lugares. Limpe o cache do WP Rocket para que as páginas sejam regeradas com as URLs novas e purgue o cache da própria CDN para descartar cópias antigas dos arquivos. Só depois de limpar os dois é que o teste no código-fonte reflete a configuração atual.

**Fonte:** [WP Rocket — Using WP Rocket's CDN option](https://docs.wp-rocket.me/article/42-using-wp-rockets-cdn-option)
