Como corrigir o Erro de sitemap Sitemap 404 da Yoast

Tendo sido baixado mais de 1 milhão de vezes, o plugin WordPress SEO por Yoast é, de longe, o melhor e mais completo plugin de SEO para o WordPress. Embora não nos tenha dado nenhum problema no passado, para alguns usuários tem sido uma dor. Recentemente, um de nossos clientes encontrou a questão de obter um erro 404 para seus sitemaps gerados pelo plugin SEO WordPress da Yoast. Depois de tentar algumas coisas, conseguimos descobrir a solução. Neste artigo, mostraremos como corrigir o erro do sitemap 404 no plugin SEO WordPress pela Yoast.

Atualização: é importante que você entenda que esse problema é provavelmente causado por uma função de tema ou um plugin mal codificado. O plugin do Yoast funciona bem em nossos sites. Só queria ser muito claro sobre isso.

A primeira coisa que você deve tentar é abrir seu arquivo .htaccess (você pode realmente fazer isso com o plugin WordPress SEO> Editar arquivos) e simplesmente adicionar o seguinte código lá:

# WordPress SEO - XML ​​Sitemap Rewrite Fix RewriteEngine On
 RewriteBase /
 RewriteRule ^ sitemap_index.xml $ /index.php?sitemap=1 [L]
 RewriteRule ^ ([^ /] +?) - sitemap ([0-9] +) ?. xml $ /index.php?sitemap=$1&sitemap_n=$2 [L] # END WordPress SEO - XML ​​Sitemap Reescreva Fix 

Para a maioria das pessoas isso corrigiu o problema. Alguém relatou que, enquanto este código corrigia o problema, a página ainda estava enviando o cabeçalho da resposta 404, o que significava que a ferramenta Google Webmasters não conseguia encontrá-lo. Bem no caso do nosso cliente, a solução acima não corrigiu o problema.

Embora não preferisse, não tínhamos escolha senão editar os principais arquivos de plugin para corrigir o problema. Como sugerido por hadjedj.vincent, nós editamos o class-sitemaps.php localizado em “/wp-content/plugins/wordpress-seo/inc/class-sitemaps.php”.

Você precisa olhar para o código init () da função e fazer essa seção ficar assim:

/ **
 * Inicializar sitemaps.  Adicionar regras de reescrita do sitemap e consultar var
 * /
 function init () {
 global $ wp_rewrite;
 $ GLOBALS ['wp'] -> add_query_var ('sitemap');
 $ GLOBALS ['wp'] -> add_query_var ('sitemap_n');
 add_rewrite_rule ('sitemap_index.xml $', 'index.php' sitemap = 1 ',' top ');
 add_rewrite_rule ('([^ /] +?) - sitemap ([0-9] +) ?. xml $', 'index.php? sitemap = $ matches [1] & sitemap_n = $ matches [2]', 'top  ');
 $ wp_rewrite-> flush_rules ();
 } 

Basicamente, o que estamos fazendo é adicionar o $ wp_rewrite global; antes de tudo o que já existe e adicionando flush_rules após o código. Ao adicionar isso no plugin, parece corrigir o problema 404 no site do nosso cliente. Não temos ideia de porque o Yoast não está fazendo isso por padrão , mas parece que alguns usuários estão tendo esse problema do sitemap 404. Esta questão é explicada nos comentários.

Atualizar: Como alguns de nossos usuários relataram que, depois de aplicar a correção acima, eles ainda precisavam desmarcar a opção do sitemap no plugin SEO do Yoast e salvar suas configurações. Depois disso, re-verificar a opção do sitemap corrigiu o erro para eles.

Se você estivesse procurando essa questão, esperamos que essa correção o tenha ajudado.