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.php?t=177077&start=0
- http://www.phpbb.com/phpBB/viewtopic.php?t=154611&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.php?t=177077&postdays=0&postorder=asc&highlight=rabbitoshi&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
» 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: |
| ################################################################# ## MOD Title: Guest Sessions MOD ## MOD Version: 0.04 ## MOD Author: CyberAlien ## 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 |
» 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.php?t=154611&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.php?t=154611&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: |
| 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: |
| 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érerhttp://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: |
| # #-----[ 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( "'(? "'(? "'(? "'(? "'(? "'(?"'(?"'(? "'(? "'(? "'(? "'(? "'(? $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 .
» Quelques mods utiles
Merci de poser les questions relatives à ces mods dans leur topic
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
Aucun commentaire:
Enregistrer un commentaire