Référencement d'un forum phpBB
Par Damien Le Peillet, le 10 Mai 2004
Résumé
Cet article rappelle les problèmes d'indexation des forums phpBB, en particulier avec Google, puis donne des solutions simples et précises. N'importe quel webmaster possédant un forum phpBB pourra ainsi avoir toutes les discussions de son forum indexées dans Google.
Cet article est constitué de 3 grandes parties :
- Les problèmes d'indexation avec phpBB
- le problème des pages dynamiques
- Le problème de l'identifiant de session sid
- Les solutions pour indexer votre forum phpBB
- Gestion de l'identifiant de session
- La réécriture des URL
- Pour finir...
- Quelques mods utiles
- Le mot de la fin
2.2 La réécriture des URL
Nous avons vu plus haut que Google n'aimait pas les URL complexes
avec plusieurs paramètres . Qu'à 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.php?t=154611&start=480
en une url sans paramètres, par exemple topic_154611_480.html.
Cette nouvelle URL contient les mêmes informations
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.php?t=154611&start=480
de manière totalement transparente. Pour
tous, l'URL sera
http://www.phpbb.com/phpBB/topic_154611_480.html
Malheureusement, certains hébergeurs n'autorisent pas les
.htaccess,
et ceux qui le font peuvent interdire les fonctions
dont nous allons avoir besoin.
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 (non exhaustive) 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 à votre site une erreur
500 apparaît, c'est que votre hébergeur
ne gère pas les .htaccess : supprimez
le fichier .htaccess).
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 (attention il ne faut aller à la ligne qu'entre deux règles RewriteRule, le reste doit être des espaces) :
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
Si vous êtes hébergé par Sivit ou OVH, vous devez utiliser le .htaccess suivant (remplacez /forums/ par le chemin relatif vers votre forum) :
RewriteRule ^forums.* /forums/index.php RewriteRule ^mforum([0-9]*).* /forums/viewforum.php?f=$1&mark=topics RewriteRule ^viewforum([0-9]*)-([0-9]*)-([0-9]*).* /forums/viewforum.php?f=$1&topicdays=$2&start=$3 RewriteRule ^forum([0-9]*).* /forums/viewforum.php?f=$1 RewriteRule ^ptopic([0-9]*).* /forums/viewtopic.php?t=$1&view=previous RewriteRule ^ntopic([0-9]*).* /forums/viewtopic.php?t=$1&view=next RewriteRule ^stopic([0-9]*)-([0-9]*).* /forums/viewtopic.php?t=$1&watch=topic&start=$2 RewriteRule ^utopic([0-9]*)-([0-9]*).* /forums/viewtopic.php?t=$1&unwatch=topic&start=$2 RewriteRule ^ftopic([0-9]*)-([0-9]*)-([a-zA-Z]*)-([0-9]*).* /forums/viewtopic.php?t=$1 &postdays=$2&postorder=$3&start=$4 RewriteRule ^ftopic([0-9]*)-([0-9]*).* /forums/viewtopic.php?t=$1&start=$2 RewriteRule ^ftopic([0-9]*).* /forums/viewtopic.php?t=$1 RewriteRule ^ftopic([0-9]*).html /forums/viewtopic.php?t=$1&start=$2&postdays=$3 &postorder=$4&highlight=$5 RewriteRule ^setopic_([0-9]*)-([a-zA-Z0-9]*).* /forums/viewtopic.php?t=$1&highlight=$2 RewriteRule ^sutra([0-9]*).* /forums/viewtopic.php?p=$1
Pour rappel, ce fichier doit se mettre à la racine de votre forum, et non de votre site.
Notes :
- certaines configurations n'autorisent pas la création d'un fichier nommé .htaccess (car ce n'est qu'une extension), dans ce cas, donnez-lui un autre nom puis renommez-le une fois sur le FTP.
- 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 d'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 que les liens généres dans les
scripts soient du type 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 ce faire, il faut cibler les générateurs de pages : includes/page_header.php et includes/page_tail.php.
Voici les modifications à effectuer :
#
#-----[ 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]*)&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]*)'",
"'(?<!/)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",
"ftopic\\1-\\2-\\3-\\4.php",
"ftopic\\1-\\2-\\3-\\4-\\5.php",
"ftopic\\1-\\2.php",
"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_for_mod_rewrite($contents);
global $dbg_starttime;
Voilà, faites maintenant un tour sur votre forum, vos URL ont changé ! Voici un exemple de forum utilisant exactement ces modifications : http://mods.best-dev.com, vous aurez les mêmes URL relatives.
Suite de l'article :
- Les problèmes d'indexation avec phpBB
- le problème des pages dynamiques
- Le problème de l'identifiant de session sid
- Les solutions pour indexer votre forum phpBB
Pour
finir...- Quelques mods utiles
- Le mot de la fin
