Comme le savent les webmasters , Google n'aime pas les forums phpbb : il se contente le plus souvent de référencer la page index et semble ne pas noter l'existence des autres ....
Pourquoi ? Parce que phpbb utilise les pages dynamiques , c'est à dire changeante en fonction du contexte .
Par exemple le fichier viewtopic.php ( les liens sont ceux de phpbb.com )
http://www.phpbb.com/phpBB/viewtopic.ph ... 77&start=0
http://www.phpbb.com/phpBB/viewtopic.ph ... &start=480
Alors que le fichier est le même , son contenu est différent selon les paramètres de l'URL . Dans ce cas , selon t ( qui désigne le numéro du topic dans la base de données ) et start ( qui désigne le numéro du post par lequel doit commencer le topic ) .
En conséquence , pour le topic 177077 , qui comporte 500 posts , il y a 500 liens possibles : viewtopic.php?t=177077&start=0 jusqu'à viewtopic.php?t=177077&start=500 .
Et ça pour un seul topic !
Et on peut compliquer :
http://www.phpbb.com/phpBB/viewtopic.ph ... &start=440 Cette URL envoit aussi vers le sujet .
Mis bout à bout , le nombre de possibilités devient gigantesque : si Google référençait toutes les combinaisons possible de viewtopic.php sur phpbb.com , cela lui prendrait plus que la totalité des pages déjà indexés dans son répertoire !
En conséquence , les robots indexeurs de Google se limitent généralement à deux paramètres pour les url .Ceci est le premier obstacle à l'indexation des pages par Google .
Source
Deuxième problème , le sid ( session identifier ) .
Exemple sur cette url : http://www.phpbb.com/phpBB/faq.php?sid=5394a4ef8c6b471636f8fc49e50a9960 .
Alors que faq.php est un fichier sans paramètres dynamiques , phpbb ajoute le sid . Le sid changeant à chaque session , l'url vers la FAQ est différent à chaque visite des robots de Google .
Le nombre de sessions étant quasiment infini , si les bots référençaient de telles url , ils satureraient le moteur de recherche .
Les bots évitent donc l'indexation de ces pages .
Source
Rassurez-vous , il est possible d'améliorer tout ça
1. Commençons par ce qui me semble le plus gros obstacle : le session identifier .
La solution peut paraître simple : le supprimer tout simplement !
Impossible ! Le sid représente votre session , c'est à dire votre connexion au forum . Sans lui , vous ne seriez plus reconnu et tous les utilisateurs seraient considérés comme non connectés et identiques .... Impossible donc d'effectuer des actions comme avoir un profil , poster des messages , et toute autre action individuelle .
Par contre , la présence du sid dans les url n'a rien d'obligatoire puisque cette valeur est déjà stockée sous forme de cookies et la session dans la base de données ( table phpbb_sessions ) .
La valeur dans l'url n'est utilisée que si aucun cookie n'a été créé ! ( Se référer au fichier includes/sessions.php pour les détails ) .
Il est donc possible de supprimer le sid dans les url ( et seulement dans les url ) : vous gardez votre identifiant de session de toute façon .
A moins que .... votre navigateur n'accepte pas les cookies ... ce qui est le cas des googlebots !
Mais nous avons vu plus haut que le sid n'était finalement utile qu'aux utilisateurs connectés , qu'il est indispensable de reconnaitre comme individualités . Or , les robots Google ne se connectent jamais et sont donc toujours invités .
Conclusion : il faut supprimer le sid dans les url pour les invités !
A ma connaissance , le meilleur mod pour faire ceci est Guest Sessions Mod de CyberAlien , qui suit :
- Code: Tout sélectionner
#################################################################
## MOD Title: Guest Sessions MOD
## MOD Version: 0.04
## MOD Author: CyberAlien <no@public_email> (Vjacheslav Trushkin) http://www.phpbbstyles.com
## MOD Description:
## This mod removes session id for guests from url and this way
## guests who don't have cookies like different robots will use
## correct urls. It can be used to allow googlebot and other
## search engines to spider your forum correctly.
##
## Installation Level: Easy
## Installation Time: 1-2 Minutes
## Files To Edit (1): includes/sessions.php
##############################################################
## For Security Purposes, Please Check: http://www.phpbb.com/mods/ for the
## latest version of this MOD. Downloading this MOD from other sites could cause malicious code
## to enter into your phpBB Forum. As such, phpBB will not offer support for MOD's not offered
## in our MOD-Database, located at: http://www.phpbb.com/mods/
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################
#
#-----[ OPEN ]---------------------------------------------
#
includes/sessions.php
#
#-----[ FIND ]---------------------------------------------
# around line 157
$sql = "UPDATE " . SESSIONS_TABLE . "
SET session_user_id = $user_id, session_start = $current_time, session_time = $current_time, session_page = $page_id, session_logged_in = $login, session_admin = $admin
WHERE session_id = '" . $session_id . "'
AND session_ip = '$user_ip'";
#
#-----[ REPLACE WITH ]---------------------------------------
#
$sql_ip = $user_id == ANONYMOUS ? " AND session_ip = '$user_ip'" : '';
$sql = "UPDATE " . SESSIONS_TABLE . "
SET session_ip = '$user_ip', session_start = $current_time, session_time = $current_time, session_page = $page_id, session_logged_in = $login, session_admin = $admin
WHERE session_id = '" . $session_id . "' $sql_ip
AND session_user_id = '$user_id'";
#
#-----[ FIND ]---------------------------------------------
# around line 210
$SID = 'sid=' . $session_id;
#
#-----[ REPLACE WITH ]---------------------------------------
#
$SID = $user_id > 0 ? 'sid=' . $session_id : '';
#
#-----[ FIND ]---------------------------------------------
# around line 288
$SID = ($sessionmethod == SESSION_METHOD_GET || defined('IN_ADMIN')) ? 'sid=' . $session_id : '';
#
#-----[ REPLACE WITH ]---------------------------------------
#
$SID = $userdata['user_id'] > 0 ? (($sessionmethod == SESSION_METHOD_GET || defined('IN_ADMIN')) ? 'sid=' . $session_id : '') : '';
#
#-----[ FIND ]---------------------------------------------
# around line 340
//
// If we reach here then no (valid) session exists. So we'll create a new one,
#
#-----[ BEFORE, ADD ]---------------------------------------
#
elseif(empty($sessiondata))
{
// try to login guest
$sql = "SELECT u.*, s.*
FROM " . SESSIONS_TABLE . " s, " . USERS_TABLE . " u
WHERE s.session_ip = '$user_ip'
AND s.session_user_id = " . ANONYMOUS . "
AND u.user_id = s.session_user_id
LIMIT 0, 1";
if ( !($result = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, 'Error doing DB query userdata row fetch', '', __LINE__, __FILE__, $sql);
}
$userdata = $db->sql_fetchrow($result);
if ( isset($userdata['user_id']) )
{
if ( $current_time - $userdata['session_time'] > 60 )
{
$sql = "UPDATE " . SESSIONS_TABLE . "
SET session_time = $current_time, session_start = $current_time, session_page = 0
WHERE session_id = '" . $userdata['session_id'] . "'";
if ( !$db->sql_query($sql) )
{
message_die(CRITICAL_ERROR, 'Error updating sessions table', '', __LINE__, __FILE__, $sql);
}
}
return $userdata;
}
}
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
( Veuillez noter que votre code sera légèrement différent suivant les mods déjà installés ( notamment le mod Last Visit de Niels ) et votre version de phpbb ) .
2. La réécriture des URL
Nous avons vu plus haut que Google n'aimait pas les URL complexes avec plusieurs paramètres . Que cela ne tienne , nous allons donc les réécrire , en language de webmaster , utiliser l'URL REWRITING .
En quoi cela consiste-t-il ? En transformer les URL "à la volée" : c'est à dire qu'elles sont modifiées en direct , et non en passant par les fichiers .
Il est donc possible de garder ce bon viewtopic.php et ses paramètres , nous allons simplement le présenter différemment .
L'objectif est de transformer : http://www.phpbb.com/phpBB/viewtopic.ph ... &start=480 en
une url sans paramètres , par exemple topic_154611_480.html .
Cette nouvelle url contient les mêmes données mais est simplement présentée différemment !
Cela se passe en deux étapes :
Le fichier .htaccess
Ce brave petit va faire croire que ces deux url sont identiques et renvoyer http://www.phpbb.com/phpBB/topic_154611_480.html vers sa vraie destination , http://www.phpbb.com/phpBB/viewtopic.ph ... &start=480 , de manière totalement transparente . Pour tous , l'url sera http://www.phpbb.com/phpBB/topic_154611_480.html .
Malheuresement , certains hébergeurs n'autorisent pas les .htaccess , et ceux qui le font peuvent interdire les fonctions dont nous allons avoir besoin . :(
Déjà si vous êtes sur un hébergement gratuit , vous pouvez arrêter votre lecture , aucun à ma connaissance n'autorise ceci . Vous pouvez trouver sur ce topic une courte liste des hébergeurs permettant l'utilisation de cette technique .
Votre hébergeur est dans cette liste ? Passons à la suite alors ( S'il n'y figure pas , vous pouvez tenter de mettre un fichier .htaccess à la racine de votre site : si lorsque vous accédez à ce dernier , une erreur 500 apparait , c'est que votre hébergeur ne gère pas les .htaccess : supprimez ce fichier ) .
Que doit comporter ce fichier ?
Et bien toutes les règles de réécriture que vous désirez . Sur la plupart des forums que vous rencontrerez , le fichier .htaccess utilisé est tiré de ce post sur phpbb.com , que nous allons également prendre pour référence .
Le voici :
- Code: Tout sélectionner
RewriteEngine On
RewriteRule ^forums.* index.php
RewriteRule ^mforum([0-9]*).* viewforum.php?f=$1&mark=topics
RewriteRule ^viewforum([0-9]*)-([0-9]*)-([0-9]*).* viewforum.php?f=$1&topicdays=$2&start=$3
RewriteRule ^forum([0-9]*).* viewforum.php?f=$1
RewriteRule ^ptopic([0-9]*).* viewtopic.php?t=$1&view=previous
RewriteRule ^ntopic([0-9]*).* viewtopic.php?t=$1&view=next
RewriteRule ^stopic([0-9]*)-([0-9]*).* viewtopic.php?t=$1&watch=topic&start=$2
RewriteRule ^utopic([0-9]*)-([0-9]*).* viewtopic.php?t=$1&unwatch=topic&start=$2
RewriteRule ^ftopic([0-9]*)-([0-9]*)-([a-zA-Z]*)-([0-9]*).* viewtopic.php?t=$1&postdays=$2&postorder=$3&start=$4
RewriteRule ^ftopic([0-9]*)-([0-9]*).* viewtopic.php?t=$1&start=$2
RewriteRule ^ftopic([0-9]*).* viewtopic.php?t=$1
RewriteRule ^ftopic([0-9]*).html viewtopic.php?t=$1&start=$2&postdays=$3&postorder=$4&highlight=$5
RewriteRule ^setopic_([0-9]*)-([a-zA-Z0-9]*).* viewtopic.php?t=$1&highlight=$2
RewriteRule ^sutra([0-9]*).* viewtopic.php?p=$1
RewriteRule ^newtopic([0-9]*).* viewtopic.php?t=$1&view=newest
Si vous êtes hébergé par Sivit ou OVH , vous devez utiliser le .htaccess suivant ( remplacez /forum/ par le chemin relatif vers votre forum ) :
- Code: Tout sélectionner
RewriteEngine On
RewriteRule ^forums.* /forum/index.php
RewriteRule ^mforum([0-9]*).* /forum/viewforum.php?f=$1&mark=topics
RewriteRule ^viewforum([0-9]*)-([0-9]*)-([0-9]*).* /forum/viewforum.php?f=$1&topicdays=$2&start=$3
RewriteRule ^forum([0-9]*).* /forum/viewforum.php?f=$1
RewriteRule ^ptopic([0-9]*).* /forum/viewtopic.php?t=$1&view=previous
RewriteRule ^ntopic([0-9]*).* /forum/viewtopic.php?t=$1&view=next
RewriteRule ^stopic([0-9]*)-([0-9]*).* /forum/viewtopic.php?t=$1&watch=topic&start=$2
RewriteRule ^utopic([0-9]*)-([0-9]*).* /forum/viewtopic.php?t=$1&unwatch=topic&start=$2
RewriteRule ^ftopic([0-9]*)-([0-9]*)-([a-zA-Z]*)-([0-9]*).* /forum/viewtopic.php?t=$1&postdays=$2&postorder=$3&start=$4
RewriteRule ^ftopic([0-9]*)-([0-9]*).* /forum/viewtopic.php?t=$1&start=$2
RewriteRule ^ftopic([0-9]*).* /forum/viewtopic.php?t=$1
RewriteRule ^ftopic([0-9]*).html /forum/viewtopic.php?t=$1&start=$2&postdays=$3&postorder=$4&highlight=$5
RewriteRule ^setopic_([0-9]*)-([a-zA-Z0-9]*).* /forum/viewtopic.php?t=$1&highlight=$2
RewriteRule ^sutra([0-9]*).* /forum/viewtopic.php?p=$1
RewriteRule ^newtopic([0-9]*).* /forum/viewtopic.php?t=$1&view=newest
Pour rappel , ce fichier doit se mettre à la racine de votre forum , et non de votre site .
Note : certaines configurations n'autorisent pas l'existence d'un fichier nommé .htaccess ( car ce n'est qu'une extenstion ) , dans ce cas , donnez-lui un autre nom puis renommez le une fois sur le FTP .
Deuxième note : pour les personnes possédant leur propre serveur , il est possible d'activer le module mod_rewrite , je conseille la lecture de cette page aux heureux propriétaires .
S'il vous est totalement impossible d'utiliser un .htaccess ou le module mod_rewrite Apache , vous pouvez tenter d'utiliser cette technique qui affiche les variables comme des sous-répertoires . Attention , ceci est en version béta et n'est pas validée par le groupe phpBB ! Utilisez le à vos risques et périls .
Modifications des fichiers du forum
Maintenant il faut générer http://www.phpbb.com/phpBB/topic_154611_480.html ! Sinon cela ne sert à rien de transformer cette URL , puisqu'elle n'est jamais utilisée .
Pour se faire , il faut cibler les générateurs de pages : includes/page_header.php et includes/page_tail.php .
Voici les modifications à effectuer :
- Code: Tout sélectionner
#
#-----[ OUVRIR ]------------------------------------------
#
includes/page_header.php
#
#-----[ TROUVER ]------------------------------------------
#
#
$template->set_filenames(array(
'overall_header' => ( empty($gen_simple_header) ) ? 'overall_header.tpl' : 'simple_header.tpl')
);
#
#-----[ APRES, AJOUTER ]------------------------------------------
#
ob_start();
function replace_mod_rewrite($s)
{
$urlin = array(
"'(?<!/)viewforum.php\?f=([0-9]*)&topicdays=([0-9]*)&start=([0-9]*)'",
"'(?<!/)viewforum.php\?f=([0-9]*)&mark=topics'",
"'(?<!/)viewforum.php\?f=([0-9]*)'",
"'(?<!/)viewtopic.php\?t=([0-9]*)&view=previous'",
"'(?<!/)viewtopic.php\?t=([0-9]*)&view=next'",
"'(?<!/)viewtopic.php\?t=([0-9]*)&view=newest'",
"'(?<!/)viewtopic.php\?t=([0-9]*)&(?:amp;)watch=topic&(?:amp;)start=([0-9]*)'",
"'(?<!/)viewtopic.php\?t=([0-9]*)&(?:amp;)unwatch=topic&(?:amp;)start=([0-9]*)'",
"'(?<!/)viewtopic.php\?t=([0-9]*)&postdays=([0-9]*)&postorder=([a-zA-Z]*)&start=([0-9]*)'", "'(?<!/)viewtopic.php\?t=([0-9]*)&start=([0-9]*)&postdays=([0-9]*)&postorder=([a-zA-Z]*)&highlight=([a-zA-Z0-9]*)'",
"'(?<!/)viewtopic.php\?t=([0-9]*)&start=([0-9]*)'",
"'(?<!/)viewtopic.php\?t=([0-9]*)&highlight=([a-zA-Z0-9]*)'",
"'(?<!/)viewtopic.php\?t=([0-9]*)'",
"'(?<!/)viewtopic.php\?p=([0-9]*)'");
$urlout = array(
"viewforum\\1-\\2-\\3.php",
"mforum\\1.php",
"forum\\1.php",
"ptopic\\1.php",
"ntopic\\1.php",
"newtopic\\1.php",
"stopic\\1-\\2.php",
"utopic\\1-\\2.php",
"ftopic\\1-\\2-\\3-\\4.php",
"ftopic\\1-\\2-\\3-\\4-\\5.php",
"ftopic\\1-\\2.php",
"setopic_\\1-\\2.html",
"ftopic\\1.php",
"sutra\\1.php");
$s = preg_replace($urlin, $urlout, $s);
return $s;
}
#
#-----[ OUVRIR ]------------------------------------------
#
includes/page_tail.php
#
#-----[ TROUVER ]------------------------------------------
#
$db->sql_close();
#
#-----[ APRES, AJOUTER ]------------------------------------------
#
$contents = ob_get_contents();
ob_end_clean();
echo replace_mod_rewrite($contents);
global $dbg_starttime;
#
#-----[ TROUVER ]------------------------------------------
#
$gzip_contents = ob_get_contents();
ob_end_clean();
#
#-----[ APRES, AJOUTER ]------------------------------------------
#
echo replace_mod_rewrite($contents);
global $dbg_starttime;
Voilà , faites maintenant un tour sur votre forum , vos url ont changées !
Voici un exemple de forum utilisant exactement ces modifications : http://mods.best-dev.com/ , vous aurez les mêmes URL relatives .
3. Quelques mods utiles ( merci de poser les questions relatives à ces mods dans leur topic ) :
=>Google Track Visit v1.0.0 & son ADDON Google Visit Counter v1.0.0 pour le MOD Google Track Visit v1.0.0
=>Log Bot
=>Google Visit Counter v1.0.0
En anglais :
==>Bot Indexing MOD
==>phpBB Search Engine Optimization
==>phpBB Search Engine Indexer
Ne confondez pas faciliter le référencement et le faire : appliquer ses modifications ne fera pas venir les googlebots sur votre forum , il faut les attirer les petits ! Vous pouvez lire les conseils du site en lien au début du post , vous en trouverez de nombreux de qualités .
Pour conclure , pensez surtout au contenu de votre forum , le but n'est pas de faire un forum numéro un sur Google avec deux inscrits ....
Bon référencement à tous




