Indicizzazione Forum

Aver reso i Forum Search Engine Friendly non significa aver finito (purtroppo :))). Siamo solo all'inizio dell'opera!

Una volta "pronti" per l'indicizzazione dobbiamo far si' che gli spider trovino tutti i nostri thread. Perche' cio' avvenga bisogna agire in due modi:

- dando una Sitemaps ai motori di ricerca

- rendendo gli url disponibili direttamente nelle nostre pagine, cioè una Mappa delle Discussioni del Forum

Per le Sitemaps da dare ai motori di ricerca vi segnalo alcuni prodotti/plugin:

Per chi usa vBSeo segnalo il relativo prodotto

Vbulletin Google Sitemaps

Vi comunico che i motori di ricerca hanno comunque ufficializzato un protocollo che va bene per tutti i tipi di Sitemaps da dare agli stessi motori: Sitemaps.org

Per quanto riguarda invece l'altra cosa da fare (cioè una Mappa delle Discussioni del Forum), voglio darti alcuni consigli:

- linka gli ultimi X thread dalla home del sito

- linka tutte le sezioni del forum dalla home del sito

- crea delle mappe di link tra le ultime discussioni. Ad esempio crea una mappa che colleghi tutte le discussioni dalla 20a alla 100a, un'altra che colleghi tutte le discussioni dalla 100a alla 180a ecc...

- crea delle mappe che collegano le pagine interne delle varie sezioni del forum (è molto importante). Supponiamo che in ogni sezione del tuo forum si possano visualizzare gli ultimi 30 thread (sei tu che hai deciso di vedere 30 thread dal pannello di controllo). Se si hanno 34 thread, automaticamente si genera  una pagina interna che contiene i 4 thread. E' bene collegare queste due pagine interne, quella con i 30 thread a quella con i 4 thread. Se i thread iniziano a diventare più di 1000, è importante creare mappe di link che collegano queste pagine interne.
Una chicca: con vBulletin puoi decidere quante di queste pagine interne possono essere visualizzate nella home della sezione :)

Sitemaps per PhpBB

Se usi PhpBB devi sapere .. che la mappa delle discussioni del forum da mettere nel del sito deve seguire sempre i consigli di sopra e quindi riuscire a farne una semplicemente con delle query al vostro Database. Per ogni forum purtroppo se ne dovrebbe fare una diversa, non posso fornirvi un codice uguale per tutti.

Per quanto riguarda invece la Google Sitemaps ho richiesto a Sitionweb (moderatore del mio forum) se ci poteva dare il codice per realizzarla perchè lui la usa per il suo forum sul Molise usando il PhpBB con URL di questa struttura: www.sito.it/forum/nome-del-topic-vt23.html dove 23 è, ovviamente, l'id del topic. Quindi, per quelli che si trovano in quelle condizioni (che ho visto essere molti), abbiamo un bel tutorial.

Vi passo i codici, questo per l'.htaccess

RewriteEngine on
RewriteRule ^sitemap.xml$ sitemap.php [L]
RewriteRule ^forum-([0-9]+).xml$ sitemap.php?fid=$1 [L]
 

Questi invece per sitemap.php:

<?php

define('FORUM_DOMAIN_ROOT', 'http://www.discovermolise.com/forum/'); // Full URL with trailing slash!

define('PHPBB_PREFIX', 'phpbb_'); // Your phpBB tables prefix, WITHOUT the _ character.

// --------------------------------------------------
// You don't need to edit anything below this line!!!
// --------------------------------------------------

define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

if ($_GET['fid']) { $fid = $_GET['fid']; }

// Sitemap File <sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84">
// URL Index File <urlset xmlns="http://www.google.com/schemas/sitemap/0.84">';
if (isset($fid)) {
echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";
if ($fid == '65535') {
// Let's first send out the header & homepage
echo ' <urlset xmlns="http://www.google.com/schemas/sitemap/0.84">'."\n";
echo ' <url>
<loc>'.FORUM_DOMAIN_ROOT.'</loc>
<changefreq>daily</changefreq>
</url>';
// Let's send out a URL list of forums
$sql = 'SELECT forum_id FROM '.PHPBB_PREFIX.'forums WHERE auth_view = "0" and auth_read = "0" and forum_id not like "%-%"';
$result = mysql_query($sql);
while ($data = mysql_fetch_assoc($result)) {
echo ' <url>
<loc>'.FORUM_DOMAIN_ROOT.FORUM_URL_PREFIX.$data['forum_id'].FORUM_URL_SUFFIX.'</loc>
<changefreq>daily</changefreq>
</url>';
}
echo ' </urlset>';
} else {
// Let's check it's not a restricted forum
$sql = 'SELECT forum_id FROM '.PHPBB_PREFIX.'forums WHERE auth_view = "0" and auth_read = "0" and forum_id = "'.$fid.'" and forum_id not like "%-%"';
$result = mysql_query($sql);
$data = mysql_fetch_assoc($result);
if ($data['forum_id'] == $fid) {
echo ' <urlset xmlns="http://www.google.com/schemas/sitemap/0.84">'."\n";
$sql = 'SELECT t.*, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_username, p2.post_username AS post_username2, p2.post_time FROM '.PHPBB_PREFIX.'topics t, '.PHPBB_PREFIX.'users u, '.PHPBB_PREFIX.'posts p, '.PHPBB_PREFIX.'posts p2, '.PHPBB_PREFIX.'users u2 WHERE t.forum_id = '.$fid.' AND t.topic_poster = u.user_id AND p.post_id = t.topic_first_post_id AND p2.post_id = t.topic_last_post_id AND u2.user_id = p2.poster_id ORDER BY t.topic_type DESC, t.topic_last_post_id DESC';
$result = mysql_query($sql);
while ($data = mysql_fetch_assoc($result)) {
echo ' <url>
<loc>'.FORUM_DOMAIN_ROOT.THREAD_URL_PREFIX.$data['topic_id'].THREAD_URL_SUFFIX.'</loc>
<lastmod>'.date('Y-m-d', $data['post_time']),'</lastmod>
</url>';
}
echo ' </urlset>';
}
}
} else {
echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";
echo ' <urlset xmlns="http://www.google.com/schemas/sitemap/0.84">'."\n";
// Let's create a link to the main forum index sitemap
echo ' <url>
<loc>'.FORUM_DOMAIN_ROOT.'forum-65535.xml</loc>
<changefreq>monthly</changefreq>
</url>';
// Let's do a loop here and list all the forums!
$sql = 'SELECT forum_id, forum_name FROM '.PHPBB_PREFIX.'forums WHERE auth_view = "0" and auth_read = "0" and forum_id not like "%-%"';
$result = mysql_query($sql);
while ($data = mysql_fetch_assoc($result)) {

$url = $data['forum_name'];

$find = array(' ');

$url = str_replace($find,"-",$url);
$find = array(' ',
'&',
'\r\n',
'\n',
'/',
'\\',
'+');

$find = array('?','!');

$url = str_replace($find,'',$url);

$url = str_replace ($find, '-', $url);

$find = array(' ',
'é',
'è',
'ë',
'ê');

$url = str_replace ($find, 'e', $url);

$find = array(' ',
'ó',
'ò',
'ô',
'ö');

$url = str_replace ($find, 'o', $url);

$find = array(' ',
'á',
'à',
'â',
'ä');

$url = str_replace ($find, 'a', $url);

$find = array(' ',
'í',
'ì',
'î',
'ï');

$url = str_replace ($find, 'i', $url);

$find = array(' ',
'ú',
'ù',
'û',
'ü');

$url = str_replace ($find, 'u', $url);

$today = date("Y-m-d"); #data ultima modifica


echo '<url>
<loc>'.FORUM_DOMAIN_ROOT . $url . '-vf' . $data['forum_id'].'.html</loc>
<lastmod>' . $today . '</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>';
}


// Let's do a loop here and list all the forums!
$sqltopic = 'SELECT topic_id, topic_title FROM '.PHPBB_PREFIX.'topics';
$resulttopic = mysql_query($sqltopic);
while ($datatopic = mysql_fetch_assoc($resulttopic)) {

$urltopic = $datatopic['topic_title'];

$findtopic = array(' ');

$urltopic = str_replace($findtopic,"-",$urltopic);
$findtopic = array(' ',
'&',
'\r\n',
'\n',
'/',
'\\',
'+');

$urltopic = str_replace ($findtopic, '-', $urltopic);

$findtopic = array('?','!');

$urltopic = str_replace($findtopic,'',$urltopic);

$findtopic = array(' ',
'é',
'è',
'ë',
'ê');

$urltopic = str_replace ($findtopic, 'e', $urltopic);

$findtopic = array(' ',
'ó',
'ò',
'ô',
'ö');

$urltopic = str_replace ($findtopic, 'o', $urltopic);

$findtopic = array(' ',
'á',
'à',
'â',
'ä');

$urltopic = str_replace ($findtopic, 'a', $urltopic);

$findtopic = array(' ',
'í',
'ì',
'î',
'ï');

$urltopic = str_replace ($findtopic, 'i', $urltopic);

$findtopic = array(' ',
'ú',
'ù',
'û',
'ü');

$urltopic = str_replace ($findtopic, 'u', $urltopic);

echo '<url>
<loc>'.FORUM_DOMAIN_ROOT . $urltopic . '-vt' . $datatopic['topic_id'].'.html</loc>
<lastmod>' . $today . '</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>';
}
echo "\n".' </urlset>';
}



?>

Un bel pò di codice, ma molto utile :)

Una volta quindi create le premesse per una buona struttura, una buona indicizzazione...andiamo al prossimo capitolo :)

  • Domande? se hai domande e vuoi discuterne con altri esperti, allora visita il Forum sul Web Marketing
  • > Links Utili

    > Aggiornati: News di Web Marketing e Posizionamento

    > Pubblica GRATIS questo ebook nel tuo sito: clicca qui

    > Copyright:  questa guida è realizzata da Giorgio Taverniti e promossa da 3 Web Marketing e Madri Internet Marketing