Forums HOSTONET - SUPPORT TECHNIQUE
 FAQ  •  Recherche  •  Membres  •  Groupes   •  Inscription  •  Profil  •  Se connecter pour vérifier ses messages privés  •  Connexion
 Faciliter le référencement des forums phpBB sur Google Voir le sujet suivant
Voir le sujet précédent
Poster un nouveau sujetRépondre au sujet
Auteur Message
Hostonet Support
Administrateur HOSTONET


Inscrit le : 15 Fév 2005
Messages: 1111
Localisation : Ham-sur-Heure / Nalinnes

Message Posté le : Dim 17 Avr 2005, 20:18:27 - Pays dépositaire du message : Répondre en citantRevenir en haut

Avant de commencer , veuillez noter que presque toutes les explications à suivre sont tirées du site
http://forums.phpbb-fr.com/viewtopic_39629.html

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 )

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 : ftopic177077-0.html jusqu'à ftopic177077-500.html .
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.

Grâce à l'URL Rewriting, Google ainsi que n'importe quel robot va pouvoir indexer les pages dynamiques. L'intérêt est par exemple d'avoir plusieurs milliers de pages de votre site indexées dans Google (le catalogue de tous vos produits, votre forum, etc.).

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.

Rassurez-vous , il est possible d'améliorer tout ça :wink:

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:
#
#-----[ 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;
      }
   }
#
#-----[ FERMER LE FICHIER ]---------------------------------------
#


(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.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 httpd.ini
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

Que doit comporter ce fichier ?
Et bien toutes les règles de réécriture que vous désirez
Code:

[ISAPI_Rewrite]

RepeatLimit 32

# Blocage de l'accès externe au httpd.ini et httpd.parse.errors

RewriteRule .*/httpd(?:\.ini|\.parse\.errors).* / [F,I,O]

# Blocage de l'accès externe au extension ISAPI
RewriteRule .*\.isrwhlp [F,I,O]

# Directives de réécriture des URL de phpBB
RewriteRule ^/forums.* /index.php
RewriteRule ^/forum([0-9]*).* /viewforum.php\?f=$1
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]*).* /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=newes


Pour rappel , ce fichier doit se mettre à la racine de votre site, et non de votre forum

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:
#
#-----[ 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]*)&amp;topicdays=([0-9]*)&amp;start=([0-9]*)'",
      "'(?<!/)viewforum.php\?f=([0-9]*)&amp;mark=topics'",
      "'(?<!/)viewforum.php\?f=([0-9]*)'",

      "'(?<!/)viewtopic.php\?t=([0-9]*)&amp;view=previous'",
      "'(?<!/)viewtopic.php\?t=([0-9]*)&amp;view=next'",
      "'(?<!/)viewtopic.php\?t=([0-9]*)&amp;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]*)&amp;postdays=([0-9]*)&amp;postorder=([a-zA-Z]*)&amp;start=([0-9]*)'",      "'(?<!/)viewtopic.php\?t=([0-9]*)&amp;start=([0-9]*)&amp;postdays=([0-9]*)&amp;postorder=([a-zA-Z]*)&amp;highlight=([a-zA-Z0-9]*)'",
      "'(?<!/)viewtopic.php\?t=([0-9]*)&amp;start=([0-9]*)'",
      "'(?<!/)viewtopic.php\?t=([0-9]*)&amp;highlight=([a-zA-Z0-9]*)'",
      "'(?<!/)viewtopic.php\?t=([0-9]*)'",
      "'(?<!/)viewtopic.php\?p=([0-9]*)'");

   $urlout = array(
      "viewforum\\1-\\2-\\3.html",
      "mforum\\1.html",
      "forum\\1.html",

      "ptopic\\1.html",
      "ntopic\\1.html",
      "newtopic\\1.html",
      "stopic\\1-\\2.html",
      "utopic\\1-\\2.html",
      "ftopic\\1-\\2-\\3-\\4.html",
      "ftopic\\1-\\2-\\3-\\4-\\5.html",
      "ftopic\\1-\\2.html",
      "setopic_\\1-\\2.html",
      "ftopic\\1.html",
      "sutra\\1.html");

   $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;
#
#-----[ FERMER ET SAUVEGARDER TOUT ]----------------------
#

Voilà , faites maintenant un tour sur votre forum , vos url ont changées !

Tout comme sur ce forum Lol
Voir le profil de l'utilisateurEnvoyer un message privéEnvoyer l'e-mailVisiter le site web de l'utilisateurMSN Messenger
Montrer les messages depuis :      
Poster un nouveau sujetRépondre au sujet


 Aller vers:   




Voir le sujet suivant
Voir le sujet précédent
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas répondre aux sondages de ce forum


Theme : FI Theme modified by HOSTONET - Some Graphics made by Hostonet
Traduction par : phpBB France
Powered by phpBB © 2001, 2002 phpBB Group