• Configuration de l'affichage du site :
  • Affichage en pleine largeur
  • Affichage en basse résolution (800px)
  • Affichage en texte seul


Référencement :
conseils, outils, actualité, forum
tout ça gratuit !



Vous êtes ici : Analyses » Autres articles » Référencement d'un forum phpBB

Référencement d'un forum phpBB

Imprimer cet article

Par Damien Le Peillet, le 10 Mai 2004

Le terrier enchanté de Lapin Malin
Lapin Malin

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- Les solutions pour indexer votre forum phpBB

Source : Le problème des sessions pour le référencement.

Rassurez-vous, il est possible d'améliorer tout ça :)
Commençons par ce qui me semble le plus gros obstacle : le session identifier

2.1 Gestion de l'identifiant de session

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 individus. Or, les robots Google ne se connectent jamais et sont donc toujours reconnus en tant qu'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 :

#
#-----[ OUVRIR ]---------------------------------------
#
includes/sessions.php

#
#-----[ TROUVER ]---------------------------------------
# vers la ligne 139
$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
WHERE session_id = '" . $session_id . "'
AND session_ip = '$user_ip'";

#
#-----[ REMPLACER PAR ]---------------------------------
#
$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
WHERE session_id = '" . $session_id . "' $sql_ip
AND session_user_id = '$user_id'";

#
#-----[ TROUVER ]---------------------------------------
# vers la ligne 186
$SID = 'sid=' . $session_id;

#
#-----[ REMPLACER PAR ]---------------------------------
#
$SID = $user_id > 0 ? 'sid=' . $session_id : '';

#
#-----[ TROUVER ]---------------------------------------
# vers la ligne 256
$SID = ($sessionmethod == SESSION_METHOD_GET || defined('IN_ADMIN')) ? 'sid=' . $session_id : '';

#
#-----[ REMPLACER PAR ]---------------------------------
#
$SID = $userdata['user_id'] > 0 ? (($sessionmethod == SESSION_METHOD_GET || defined('IN_ADMIN')) ? 'sid=' . $session_id : '') : '';

#
#-----[ TROUVER ]---------------------------------------
# vers la ligne 303
//
// If we reach here then no (valid) session exists. So we'll create a new one,
#
#-----[ AVANT, AJOUTER ]--------------------------------
#
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;
}
}

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.

Suite de l'article :

  1. Les problèmes d'indexation avec phpBB
    • le problème des pages dynamiques
    • Le problème de l'identifiant de session sid
  2. Les solutions pour indexer votre forum phpBB
  3. Pour finir...
    • Quelques mods utiles
    • Le mot de la fin