Como corrigir o CDN Rewrite que não altera URLs no Perfmatters no WordPress
O que é CDN Rewrite que não funciona no Perfmatters?
O Perfmatters CDN Rewrite e a função que reescreve, no HTML da página, os enderecos dos arquivos estáticos (CSS, JavaScript, imagens e fontes) do domínio do site para a CDN URL configurada. Ele não cria nem hospeda um CDN: assume que você já tem uma zona de CDN apontando para o seu site (um pull zone do BunnyCDN, KeyCDN, Cloudflare ou similar) e apenas troca o prefixo das URLs em tempo de saida, em Perfmatters -> CDN. O recurso e desligado por padrão e so passa a reescrever depois de marcado e salvo.
Quando a configuração não casa, as URLs simplesmente não mudam: você inspeciona o código-fonte da página e os assets continuam saindo de https://seusite.com/wp-content/… em vez de https://cdn.seusite.com/wp-content/…. O Perfmatters reescreve por prefixo de caminho com base nas Included Directories (padrão wp-content e wp-includes) e respeita os Excluded Strings, entao arquivos fora desses diretorios, URLs já absolutas para outro host, ou caminhos casados por uma exclusão permanecem no domínio original.
Como identificar
- No código-fonte da página (Ctrl+U), os assets continuam com a URL do domínio do site, como https://seusite.com/wp-content/uploads/imagem.jpg, em vez do prefixo do CDN.
- Na aba Network do navegador (F12 -> Network), os arquivos CSS, JS e imagens são baixados do seu domínio e não do host do CDN configurado.
- A opção Enable CDN Rewrite aparece marcada, mas nenhuma URL muda após limpar o cache do site e do navegador.
- Apenas parte dos assets aponta para o CDN: as imagens da pasta uploads mudam, mas scripts ou fontes de outras pastas seguem no domínio original.
- Ao abrir a CDN URL de um arquivo manualmente no navegador, o arquivo carrega, provando que a zona do CDN funciona e que o problema esta na reescrita do Perfmatters.
Como prevenir
- Sempre confirme a reescrita no código-fonte da página logo após ativar ou alterar o CDN Rewrite, em vez de assumir que a opção marcada já resolveu.
- Mantenha as Included Directories alinhadas com as pastas reais dos seus assets e revise o campo quando adicionar plugins que sirvam arquivos de pastas proprias.
- Use Excluded Strings apenas para caminhos especificos e documentados, evitando trechos genericos que possam bloquear assets que deveriam ir para o CDN.
- Padronize a limpeza do cache de página e do CDN como último passo de qualquer mudanca na configuração de CDN, para não servir HTML antigo com URLs do domínio.
- Evite rodar mais de um recurso de reescrita de CDN ao mesmo tempo (Perfmatters e outro plugin de cache), para não gerar conflito de substituicao de URLs.
Causa
- A opção Enable CDN Rewrite em Perfmatters -> CDN esta desmarcada ou as alterações não foram salvas, entao o plugin não reescreve nenhuma URL no HTML de saida.
- O campo CDN URL esta vazio, com erro de digitacao, sem https, ou com barra final sobrando, fazendo o Perfmatters não montar um prefixo valido para substituir o domínio do site.
- Os arquivos que você espera ver no CDN estão fora das Included Directories: o padrão reescreve apenas wp-content e wp-includes, entao assets servidos de outras pastas não são tocados.
- Um valor em Excluded Strings esta casando com os caminhos dos assets (por exemplo um nome de pasta ou extensão amplo demais), forçando o Perfmatters a deixar essas URLs no domínio original.
- Um plugin de cache de página serviu uma versão do HTML gerada antes de ativar o CDN Rewrite, devolvendo a página antiga com as URLs do domínio até o cache ser limpo.
- O tema ou outro plugin imprime URLs de assets já absolutas apontando para um host diferente do domínio do site, que o Perfmatters não reconhece como caminho local para reescrever.
Como resolver
- Ative o CDN Rewrite e confirme a CDN URL: Em Perfmatters, abra a aba CDN, marque a opção Enable CDN Rewrite e preencha o campo CDN URL com o endereco completo da sua zona de CDN, sem barra no final. Salve as alterações ao terminar, pois o recurso fica desligado por padrão e não reescreve nada sem ser salvo.
Painel WP -> Perfmatters -> aba CDN Marque Enable CDN Rewrite CDN URL: https://cdn.seusite.com Clique em Save Changes - Valide as Included Directories: Ainda na aba CDN, confira o campo Included Directories. O padrão reescreve apenas wp-content e wp-includes. Se os assets que ficaram de fora vem de outra pasta, acrescente o nome dela separado por virgula para que o Perfmatters passe a reescrever esses caminhos também.
Painel WP -> Perfmatters -> aba CDN -> Included Directories Padrão: wp-content,wp-includes Adicione a pasta faltante separada por virgula, sem espacos extras Clique em Save Changes - Revise os Excluded Strings: No campo Excluded Strings, remova qualquer valor amplo demais que esteja casando com os caminhos dos assets que deveriam ir para o CDN. Um trecho genérico como um nome de pasta comum ou uma extensão pode bloquear a reescrita de arquivos que você quer no CDN.
Painel WP -> Perfmatters -> aba CDN -> Excluded Strings Remova trechos genericos que casam com os assets desejados Mantenha apenas exclusoes especificas e necessarias Clique em Save Changes - Limpe os caches e teste no código-fonte: Limpe o cache de página do seu plugin de cache e o cache do navegador, depois recarregue uma página e abra o código-fonte. As URLs dos assets nas Included Directories devem agora comecar pela CDN URL. Se ainda aparecerem no domínio, o HTML antigo ainda esta sendo servido de algum cache.
Limpe o cache do seu plugin de cache de página Navegador: recarregue com Ctrl+F5 (hard refresh) Abra o código-fonte com Ctrl+U e procure por wp-content Confirme que a URL comeca por https://cdn.seusite.com/wp-content/ - Teste a zona do CDN e isole conflitos: Abra direto no navegador a CDN URL de um arquivo que existe no site (por exemplo a CDN URL de um arquivo CSS do tema). Se o arquivo carregar, a zona esta correta e o problema e so a reescrita. Se não carregar, ajuste o pull zone no painel do seu provedor de CDN antes de seguir.
Abra no navegador: https://cdn.seusite.com/wp-content/themes/seu-tema/style.css Se carregar: a zona esta ok, foque na reescrita do Perfmatters Se der erro: revise o origin/pull zone no painel do provedor de CDN Desative outros plugins de otimização temporariamente para descartar conflito de reescrita
<?php
// Verifica no rodape se as URLs estao realmente apontando para o CDN.
// Use temporariamente para depurar a reescrita do Perfmatters CDN Rewrite.
add_action( 'wp_footer', 'full_debug_cdn_rewrite', 99 );
function full_debug_cdn_rewrite() {
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
$cdn_host = 'cdn.seusite.com'; // troque pelo host da sua CDN URL
$sample = includes_url( 'js/jquery/jquery.min.js' );
$usa_cdn = ( false !== strpos( $sample, $cdn_host ) ) ? 'SIM' : 'NAO';
echo "<!-- CDN Rewrite ativo: {$usa_cdn} | exemplo: {$sample} -->";
}














