SEO

WordPress não aparece no Google: noindex esquecido e robots.txt virtual

Site no ar faz três semanas, o Search Console só devolve página não indexada e a sensação é de que o Google esqueceu de você. Vá em Configurações > Leitura e olhe a caixinha de sugerir aos mecanismos de busca que não indexem este site. Ela costuma ficar marcada desde a homologação e ninguém desmarca no dia da virada.

Confirme pelo terminal, não pelo olho

Essa caixinha grava a opção blog_public: zero significa bloqueado. Dá pra ler, corrigir e conferir em quatro comandos:

sudo -u www-data wp option get blog_public
sudo -u www-data wp option update blog_public 1

curl -s https://seusite.com.br/ | grep -i noindex
curl -s -o /dev/null -w "%{http_code}" https://seusite.com.br/wp-sitemap.xml

Com blog_public em zero o WordPress 6.9 injeta noindex, nofollow na meta robots de todas as páginas e devolve 404 no /wp-sitemap.xml. O que ele não faz mais, desde a 5.3, é escrever Disallow barra no robots.txt: o arquivo continua igualzinho ao de um site liberado. Por isso tanta gente olha o robots.txt, acha tudo normal e procura o problema no lugar errado.

O robots.txt do WordPress é virtual

Não adianta procurar o arquivo na raiz por FTP: ele não existe no disco. O WordPress monta a resposta na hora e os plugins de SEO entram nela pelo filtro robots_txt. A pegadinha é o contrário: se alguém criou um robots.txt de verdade na raiz durante a mudança de servidor, o nginx entrega o arquivo físico e o virtual nunca roda. Um ls -la robots.txt na pasta do site resolve a dúvida.

Com Yoast tem mais uma camada: o plugin entra no filtro wp_robots com prioridade quase máxima, então a meta robots final é a dele. Se o core já está liberado e o noindex continua no HTML, o ajuste está em SEO > Aparência da busca, no tipo de conteúdo que sumiu do índice.

Destravado, não fique esperando. Abra a Inspeção de URL no Search Console, peça a indexação da home e envie o /wp-sitemap.xml. As primeiras páginas entram em poucos dias.

Se travou nisso e precisa de ajuda, me chama aqui.

Post Recentes

Cron do Magento 2 não roda: status missed e pending no cron_schedule

Pedido que não fatura e e-mail que não sai porque todo job fica missed: como ler a cron_schedule, conferir o…

12 horas atrás

Gerar slug de URL em PHP: acento, espaço e símbolo fora do endereço

Uma função curta em PHP 8.3 que transforma Camiseta Preta Tamanho GG em camiseta-preta-tamanho-gg, sem depender do locale do servidor.

1 dia atrás

Log de consentimento LGPD: a tabela MySQL que guarda a prova do aceite

O banner registra o clique só no navegador e some. Veja a tabela MySQL e o endpoint que gravam a…

1 dia atrás

Comando CLI Magento 2: criar a classe e registrar no di.xml

A classe do comando existe e o bin/magento list ignora ela. Falta o registro no di.xml: aqui vai a classe…

2 dias atrás

Traduzir o pt_BR.csv do Magento 2 em lote sem perder a coluna de origem

Como traduzir duas mil linhas do pt_BR.csv do Magento 2 lendo com fgetcsv e regravando com fputcsv, sem encostar na…

3 dias atrás

Variação não está disponível no WooCommerce: limpar transients e lookup

Produto variável respondendo "Desculpe, este produto não está disponível" mesmo com a variação ativa: limpe os transients do WooCommerce e…

3 dias atrás