
O AMP saiu dos requisitos do Top Stories faz tempo e eu venho desligando o plugin em cliente atrás de cliente. Desativar e pronto é receita para 404 em massa: cada post tinha um /meu-post/amp/ indexado há anos. Aqui eu subo o redirect 301 no nginx antes de encostar no plugin.
# dentro do server block, antes dos location
rewrite ^(.+)/amp/?$ $1/ permanent;
# quem indexou a variante com query string
if ($arg_amp) {
return 301 $uri;
}Testa e recarrega com nginx -t && systemctl reload nginx. Repare no (.+): com (.*) a URL /amp/ da raiz também casa, o destino sai vazio e o nginx manda um Location quebrado. O $1/ é para permalink terminado em barra, o padrão do WordPress; sem barra, use só $1, senão o 404 vira uma cadeia de dois 301. O return dentro do if não reanexa a query string, e é isso que tira o ?amp=1 da jogada.
A ordem importa mais que o rewrite: publique o redirect primeiro, desative o plugin depois. Ao contrário, o WordPress para de reconhecer o endpoint na hora e o crawler pega uma janela inteira de 404. Uso 301 e não 410 porque os links da versão AMP ainda passam sinal para a URL canônica.
Purgue o cache de página inteira, senão a versão antiga continua saindo do disco e você jura que o rewrite não pegou. Confira na mão:
curl -sI https://seusite.com.br/meu-post/amp/ | head -n 3
# HTTP/2 301
# location: https://seusite.com.br/meu-post/No Search Console o relatório Páginas marca essas URLs como “Página com redirecionamento” ao longo de algumas semanas, e a contagem de 404 não pode subir. Se subir, tem AMP saindo de outro lugar, quase sempre um sitemap antigo ainda enviado na conta.
Deixe o rewrite no ar para sempre: custa quase nada por requisição e o Bing insiste em rastrear /amp/ por mais de um ano depois da mudança.
A loja cai com OOM command not allowed when used memory > maxmemory: ajuste a maxmemory-policy do Redis e separe…
Adicione a caixa de aceite no checkout do WooCommerce e grave data e versão da política como meta do pedido,…
A função json_validate do PHP 8.3 diz se a string é JSON válido sem montar array nem objeto. Serve para…
Tire a chave de API do código com variável de ambiente, bloqueie o .env no nginx e entenda por que…
A opção de armazenamento de pedidos travada em posts e a sincronização que nunca termina: como migrar para as tabelas…
Troque strpos e substr por str_contains, str_starts_with e str_ends_with no PHP 8, com o polyfill para quem ainda mantém servidor…