Bueno. esta falla esta en smf desde hace ya varias versiones.
Aparentemente siempre nos muestra .html (si esta habilitado) Pero "aparentemente" por que siempre nuestra primer visita va a salir mal ya que los enlaces nos los muestra /foro/index.php?PHPSESSID=xxxxxxxx
Cuando se crea la cookie. ahi ya podemos ver html siempre.. elimininas tu cookie y vuelve a salir este detalle.
El problema aqui es. 1.- Como a googlebot no le vas a meter cookie. siempre ira cacheando tus urls con ?board= ?topic=
Las urls que cachea con .html son las que estan añadidas de modo manual en post, plantillas. o enlaces.
Busquen en querystring.php
// Debugging templates, are we?Y de ahi al final. remplacen por
// Debugging templates, are we?
elseif (isset($_GET['debug']))
$buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?((?:board|topic)=[^#"]+?)(#[^"]*?)?"/e', "'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html\$2\"'", $buffer);
// This should work even in 4.2.x, just not CGI without cgi.fix_pathinfo.
if (!empty($modSettings['queryless_urls']) && (!$context['server']['is_cgi'] || @ini_get('cgi.fix_pathinfo') == 1) && $context['server']['is_apache'])
{
// Let's do something special for session ids!
if (defined('SID') && SID != '')
$buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?((?:board|topic)=[^#"]+?)(#[^"]*?)?"/e', "'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html\$2\"'", $buffer);
else
$buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?((?:board|topic)=[^#"]+?)(#[^"]*?)?"/e', "'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html\$2\"'", $buffer);
}
// Return the changed buffer.
return $buffer;
}
?>
Con esto ya tus urls con html seran cacheables.
Tambien es cacheable con sitemaps de googlehttp://www.google.com/webmasters/sitemaps/?hl=es