In questo articolo trattiamo un problema abbastanza anomalo di WordPress SEO by Yoast plugin e della sitemap xml di google. Un problema che si è incominciato ad avvertire con le nuove versioni di worpdpress a partire dalla 2.4 , insomma recente. Quindi se vi trovate in questa pagina è perchè andando nella google search control , quello che prima google chiamava semplicemente pannello webmaster e andando a inserire la vostra xml sitemap vi siete accorti che il vostro blog restituiva non il documento xml dovuto, ma una pagina errore 404. Sicuramente avrete provato a disattivare tutti i vostri plugins tranne il WordPress SEO by Yoast plugin, ma senza risultato, andando alla pagina xml sempre errore 404 avrete ottenuto. Sicuramente i creatori del Plugins Seo Yoast conoscono il problema, quindi nei prossimi aggiornamenti risolveranno il problema. Per il momento quindi non esiste una soluzione ufficiale al problema, ma dovremo trovare una soluzione adattata. Quello che vi proponiamo noi è modificare le regole dell’htaccess in modo che possa riconoscere il file sitemap_index.xml . Questa riscrittura di codice è specifica per il plugin Yoast. Se invece utilizzate un altro plugins per generare la xml sitemap e avete lo stesso problema errore 404 , vi suggeriamo di modificare
sitemap_index.xml
con il nome del file della sitemap generato dal vostro plugins e il gioco sarà fatto.
Fissare Errore 404 xml sitemap di Yoast con htaccess
# WordPress SEO – XML Sitemap Rewrite Fix
<IfModule mod_rewrite.c>
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]
</IfModule>
# END WordPress SEO – XML Sitemap Rewrite Fix
Se questa soluzione non dovesse funzionare, dovrete allora ricorrere a soluzioni più drastiche. Andate nel file /wp-content/plugins/wordpress-seo/inc/class-sitemaps.php e aggiungete
Fissare Errore 404 wordpress di xml sitemap di Yoast modificando il plugins
/**
* Initialize sitemaps. Add sitemap rewrite rules and query 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();
}
Pare però che questa soluzione non risolva del tutto il problema. O meglio faccia malfunzionare la sitemap.