PhpBB & URL rewrting: LA solution simple

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

Lord Farquaad
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 124
Inscription: Sam Mai 01, 2004 2:54

PhpBB & URL rewrting: LA solution simple

Message le Sam Mai 01, 2004 3:46

Voilà j'avais pas envie de me crever à modifier pleins de fichiers, et je me suis construit ma ptite solution perso pour réécrire toutes les urls de mon forum, et il n'y a que deux fichiers à modifier: includes/sessions.php (:roll:) et le .htaccess bien entendu. Vous l'aurez deviné: c'est très bourrin :roll:

Ce système ne pose aucun problème avec le panneau d'administration
(les urls sont modifiées aussi, mais l'.htaccess reformera le bon nom de fichier ensuite :-))
Temps d'installation: ~2 minutes

Il est conseillé d'installer le mod qui désactive les sessions pour les inivités, vous pourrez le trouver ici (laissez sessions.php ouvert après l'avoir installé ;-) Vous pouvez installer ce mod-là et celui-ci dans l'ordre que vous voulez.)

Pour commencer, les modifs:
Ouvrir includes/sessions.php
Trouver
Code: Tout sélectionner
function append_sid($url, $non_html_amp = false)
{
   global $SID, $phpEx;

ajouter après
Code: Tout sélectionner
   if(strpos($url, '#')){
      $url2 = explode('#', $url);
      $url = $url2[0];
      $url2[1] = '#' . $url2[1];
   } else {
      $url2 = array($url,'');
   }

Trouver
Code: Tout sélectionner
if ( !empty($SID) && !preg_match('#sid=#', $url) )
Remplacer par
Code: Tout sélectionner
if ( !empty($SID) && !preg_match('#sid__#', $url) )

Trouver
Code: Tout sélectionner
   return($url);
}

?>
Ajouter avant
Code: Tout sélectionner
   $url = str_replace(array('?','&', '&', '=', '.'.$phpEx), array('.', '-', '-', '__', ''), $url);
   $url.= '.html' . $url2[1]


Ouvrir /.htaccess:
Code: Tout sélectionner
RewriteEngine on
RewriteRule ^([^\.]+)\.html$  $1.php  [L]
RewriteRule ^([^\.]+)\.([^_\-]+|[^_\-]+_[^_\-]+)__([^\-]*)\.html$  $1.php?$2=$3&  [L,qsa]
RewriteRule ^([^\.]+)\.([^_\-]+|[^_\-]+_[^_\-]+)__([^\-]*)-(.+)\.html$  $1.$4.html?$2=$3& [n,qsa]
(jolis hein mes p'tis chinois ? :lol:)

Bref: append_sid() prend l'url donnée, ajoute un sid si nécessaire, lui supprime l'extension .php, lui remplace le "?" par un ".", les "&" par des "-" et les "=" par des "__" (fallait faire gaffe aux search_id :roll:)

Par exemple:
Code: Tout sélectionner
http://www.notredomaine.net/memberlist.php?mode=posts&order=DESC&start=50

Devient
Code: Tout sélectionner
http://www.notredomaine.net/memberlist.mode__posts-order__DESC-start__50.html
Facile hein ?

Oui mais cette solution va aussi ajouter dans l'url "-sid__id_de_la_session", et du coup, on a la "faille" sid dont j'ai lu quelques infos à ce propos... c'est vraiment grave docteur ?

Bon en fait je m'apperçois qu'il y a longtemps, j'avais modifié append_sid(), pour contenter google et un autre bot, de la façon suivante:
Code: Tout sélectionner
   global $SID, $HTTP_SERVER_VARS, $phpEx;

   if ( !empty($SID) && !eregi('sid=', $url) && !strstr($HTTP_SERVER_VARS['HTTP_USER_AGENT'] ,'Googlebot') && !strstr($HTTP_SERVER_VARS['HTTP_USER_AGENT'] ,'slurp@inktomi.com;'))
   {
      $url .= ( ( strpos($url, '?') != false ) ?  ( ( $non_html_amp ) ? '&' : '&' ) : '?' ) . $SID;
   }

...
(tiens, un truc à modifier là, avec mon système: plus bon le 'sid='...)
Donc ça fachera pas trop google (par contre la table des sessions elle doit s'en prendre un coup quand google passe: à chaque page vu une nouvelle est créée logiquement :shock: je me demande quel est le pire :?)

Semi-autre question:
Dans phpbb, un message est accessible de deux façons: soit son id de message, soit l'id du sujet et la page du message. Sachant qu'il y a x messages par page de sujet aximum, cela fait que google doit indexer x+1 fois la même page, je me trompe ? Mauvais ça si on veut pas se faire blacklisté :? Et impossible de faire de l'url rewriting avec ma solution...

Solution possible: la page qui renvoie le plus à des viewtopic.php?p=message_id, c'est search.php (?search_id=unanswered surtout pour les bots...) vous croyez qu'on meta robots noindex,nofollow serait suffisant ?
Dernière édition par Lord Farquaad le Sam Mai 08, 2004 15:01, édité 10 fois.

David@site
WRInaute impliqué
WRInaute impliqué
 
Messages: 382
Inscription: Mer Jan 14, 2004 22:36

Message le Sam Mai 01, 2004 8:54

Salut Lord Farquaad et bienvenue sur WRI,

pour le pb d'url rewrite je peux pas d'aider la mais pour la faille php je peux, voici un article sur cette faille: http://www.phpsecure.info/v2/.php?zone=pComment&d=1057322922 ne sont concerne que les versions inferieur a la 4.3.2(ca doit etre une minorite de personne), et meme pour ceux-la il y a une parade si vous avez acces a votre php.ini Plus de details dans l'article.

voila donc pas de panique c'est raisorbable.

@+
David

Lord Farquaad
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 124
Inscription: Sam Mai 01, 2004 2:54

Message le Sam Mai 01, 2004 11:57

Merci pour la bienvenue ;-)

Non si j'ai bien compris, la "faille" sid quand on parle d'URL rewriting c'est que le sid soit compris dans l'adresse de la page, et comme les moteurs de recherches utilisent souvent plusieurs bots simultanément pour visiter les pages, chaque bot obtient un sid différent, et du coup il visite les mêmes pages que tous les autres en croyant que les urls sont différentes, donc il visite toutes les pages...

Logiquement ceci ne se produit qui lorsque les bots ont chacun leur propre adresse IP, puisque sinon le premier bot visite l'index, obtient des urls avec un même sid et communique ces urls aux autres bots afin de commencer l'indexage... enfin, je suppose que c'est comme ça du moins :roll:

L'inconvéniant c'est que si on laisse un visiteur se promener sans sid, à chaque page il en obtiendra un nouveau, qui sera stocké dans la table des sessions, et ça va faire beaucoup s'il visite tout !

Je vais essayer de trouver une modification correcte de session.php pour éviter ce problème, afin que les bots n'aient pas besoin de sid...

David@site
WRInaute impliqué
WRInaute impliqué
 
Messages: 382
Inscription: Mer Jan 14, 2004 22:36

Message le Sam Mai 01, 2004 13:55

On doit pas parler de la meme faille, moi je parlais d'une faille qui permet d'injecter du code javascript ds les sid ce qui permet par exemple a un utilisateur mal intentionne de detourner des mots de passe etc....
Toi ds ton cas il faudrait mieux que les bots n'est pas de sid attribue ainsi ca t'eviterai de surcharger ta base

Lord Farquaad
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 124
Inscription: Sam Mai 01, 2004 2:54

Message le Sam Mai 01, 2004 22:40

Ben ouais... j'attends l'avis des autres parce que j'aimerais savoir combien de sid différents auraient les bots si je leur en donne un...

Et puis j'aimerais leur avis sur tout le reste de ce que j'ai dit aussi ;-)

Lord Farquaad
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 124
Inscription: Sam Mai 01, 2004 2:54

Message le Mar Mai 04, 2004 22:40

TOP ! ;-)

Bah ça fait presque 4 jours que j'ai posté ce sujet tout de même ;-) et toujours pas d'avis sur ma technique :cry:

Au fait j'ai remarqué que mon session.php avait été plus modifié que ce que je ne l'avais dit pour google (ça fait longtemps, je ne m'en souvenais plus...), et donc qu'il n'y avait qu'une seule session utilisée pour googlebot :-)

Enfin, je compte quand même faire un système qui gèrera tous les bots que l'on veut, en faisant confiance à l'ip et non au user agent :roll:

Lord Farquaad
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 124
Inscription: Sam Mai 01, 2004 2:54

Message le Mer Mai 05, 2004 19:44

J'ai trouvé un bug dans mon fichier sessions.php, j'ai fait la correction et j'ai édité mon premier message ;-)

Sachez que se bug est présent aussi sur le forum de WRI, pour le voir il faut désactiver les cookies puis aller sur l'index du forum, et dans la colonne "derniers messages", regarder le lien qui mène vers le dernier message du dernier sujet, il y a un problème avec le "#" ;-) et si on suit le lien on obtient un nouveau sid :roll:

Edit: apparemment un vieu bug de phpBB d'ailleurs, il était déjà corrigé dans la 2.0.6...

Au fait, ce post serait peut-être mieux dans "Tests et étude de cas" ? Aucune idée... enfin pour moi ce qui compte c'est d'avoir votre avis ;-)


Dr DLP
WRInaute passionné
WRInaute passionné
 
Messages: 579
Inscription: Sam Juin 28, 2003 23:42

Message le Mer Mai 05, 2004 20:17

Je trouve ta technique très bonne :)
Elle fonctionne surement très bien avec un phpbb de base , mais cela doit poser plus de problèmes avec un phpbb moddé . De nombreux mods ne suivent pas les standards qui veulent que l'on utilise append_sid() pour tous les liens vers le forum : dans ces cas là ta modif ne fonctionne pas .
Pas trop d'importance à mon avis , puisque le sid n'est pas généré dans ce cas ....

Semi-autre question:
Dans phpbb, un message est accessible de deux façons: soit son id de message, soit l'id du sujet et la page du message. Sachant qu'il y a x messages par page de sujet aximum, cela fait que google doit indexer x+1 fois la même page, je me trompe ? Mauvais ça si on veut pas se faire blacklisté Et impossible de faire de l'url rewriting avec ma solution...

Sans compter la possibilité next/previous dans les posts et les topics . Sur un phpbb de base , il y a 6 url différentes pour un post , plus les possiblités de tri , et l'option "voir dernier post" , caractérisée par le paramère ( p=post#post ) .
Et pourtant les forums phpbb sont référencées dans Google , il ne sont pas blacklistés , alors que phpb.com compte plus de 100.000 pages référencés pour son forum , incluant ses différentes URL .
Pas d'inquiétude pour ma part à ce niveau .
J'utilise l'URL rewriting , ce qui porte vers les 15 les url différentes amenant au même sujet , et pour l'instant ( même si je m'inquiète un peu ) , aucun problème de "duplicate content" .

Logiquement ceci ne se produit qui lorsque les bots ont chacun leur propre adresse IP, puisque sinon le premier bot visite l'index, obtient des urls avec un même sid et communique ces urls aux autres bots afin de commencer l'indexage... enfin, je suppose que c'est comme ça du moins

C'est pour ça que j'utilise ce mod : http://www.phpbb.com/phpBB/viewtopic.php?t=185839
Il régle aussi d'autres problèmes liés au référencement .

Lord Farquaad
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 124
Inscription: Sam Mai 01, 2004 2:54

Message le Mer Mai 05, 2004 20:56

Si tu dis qu'indexer plusieurs fois la même page ne pose pas de problème, alors c'est nickel :P

Au fait: les boutons précédents et suivant ne génèrent pas de nouvelles urls dans phpBB (à moins que ça ait changé dans les dernières versions ? :?) Par contre il y a aussi les postorder, le postdays etc. :roll:

Merci pour le mod que tu proposes, je vais installer ça directement arès avoir comparé mon sessions.php avec celui de la 2.0.8 (ce doit être un des fichiers qui a le moins varié au cours des versions, mais je l'ai ptet moddé... déjà j'ai le truc pour google...)

Au fait Doc, sur phpBB-fr je "Le nain connu" (on peut pas changer de pseudo :roll:) mais bon, je n'y vais que très rarement parce que j'ai plus trop le temps...


Dr DLP
WRInaute passionné
WRInaute passionné
 
Messages: 579
Inscription: Sam Juin 28, 2003 23:42

Message le Mer Mai 05, 2004 21:17

Cela génère pas réellement de nouvelle url , puisque c'est un ajout de paramètres .
Néanmoins c'est une url différente .
A titre indicatif , voici les pages référencées sur phpbb.com pour le merveilleux mod ( :mrgreen: ) Rabbitoshi : http://www.google.fr/search?q=site:www. ... N&filter=0
65 résultats pour le même topic .
Plus amusant : http://www.google.fr/search?q=site:www. ... art=0&sa=N . 13 résultats pour la recherche du topic sur Google , incluant un view=previous .

Pour le topic d'ADR , 35 résultats : http://www.google.fr/search?q=site:www. ... art=0&sa=N
Pour les posts : 314 résultats : http://www.google.fr/search?hl=fr&ie=UT ... %7Clang_fr

Je ne m'inquiète pas trop donc .... Evidemment il faut voir que le forum de phpbb.Com a un PR de 9 , beaucoup de ces pages sont indéxées . Pour nous , il n'y aura jamais plus de 10 résultats ( URL rewrtiing compris ) pour un topic .

Au fait Doc, sur phpBB-fr je "Le nain connu" (on peut pas changer de pseudo ) mais bon, je n'y vais que très rarement parce que j'ai plus trop le temps...

Je t'ai reconnu , Lord Farquaad est le pseudo que tu utilises sur ton forum . Je le change sur phpbb-fr .

Lord Farquaad
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 124
Inscription: Sam Mai 01, 2004 2:54

Message le Mer Mai 05, 2004 21:52

Pour les boutons précédents et suivants: ah oui tu parles de ceux pour voir les sujets suivants et précédents, mais ça ne mène que vers la première page du sujet, pas vers toutes les autres ;-)

Au fait t'as pas une explication pour le [N] dans mon .htaccess ? J'avais simulé le truc avec un [C] en php, et ça marchait sans problème avec 4 paramètres, pourtant là je suis obligé de mettre un [N] :? J'ai l'impression de ne pas bien comprendre le [C], cela signifie pourtant bien vérifier la condition et continuer le rewriting, en passant les [C] si rien n'a été modifié, non ? :?
Et question: qu'est-ce qui se passe s'il n'y a pas de flag ?

Merci pour le pseudo sur phpbb-fr :-) Je verrai ça la prochaine fois que j'irai (peut-être pas avant des mois :roll:)

Edit:
au fait, j'ai oublié de le dire mais mon système ne pose aucun problème avec le paneau d'administration !!!

Edit 2:
J'ai encore modifié ma fonction append_sid pour qu'elle évite les urls du genre
Code: Tout sélectionner
viewtopic.php?t=xy#xy&sid=add189efae1fe98da1d98fd
(dans les anciennes distributions de phpBB) et qui devenaient
Code: Tout sélectionner
viewtopic.t__xy#xy-sid__add189efae1fe98da1d98fd.html
avec la technique de départ et
Code: Tout sélectionner
viewtopic.t__xy.html#xy&sid=add189efae1fe98da1d98fd
avec la première correction.
Maintenant ça fera:
Code: Tout sélectionner
viewtopic.t__xy-sid__add189efae1fe98da1d98fd.html#xy
ce qui est correct ;-)

A noter que même dans la dernière version de phpBB, passer des urls contenant des '#' (indiquant où le navigateur doit se placer dans la page) à append_sid() est foireux... La correction que les programmeurs ont faite consistait à s'assurer qu'aucune '#' ne lui était passés... (problème lors des redirections du type viewtopic.php?t=xy&view=newest dans les anciennes distributions)

Edit 3: ah j'ai compris un peu mieux l'histoire du premier [N] qui ne marche pas si c'est [C], en fait je peux simplement enlever ce [N] :-), je vais vérifier...

milkiway
WRInaute accro
WRInaute accro
 
Messages: 2216
Inscription: Mar Fév 03, 2004 3:00

Message le Ven Mai 07, 2004 0:02

heu vous êtes sur que ça ne pose pas de problème 6 pages référencées avec le même contenu ? Par ce que je commence à me poser des questions

Lord Farquaad
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 124
Inscription: Sam Mai 01, 2004 2:54

Message le Ven Mai 07, 2004 0:21

Moi, je fais confiance au lapin :lol:

Mais bon, s'il y a besoin d'étudier, ça, je peux toujours voir...


Dr DLP
WRInaute passionné
WRInaute passionné
 
Messages: 579
Inscription: Sam Juin 28, 2003 23:42

Message le Ven Mai 07, 2004 13:14

Lord Farquaad a écrit:Edit 2:
J'ai encore modifié ma fonction append_sid pour qu'elle évite les urls du genre
Code: Tout sélectionner
viewtopic.php?t=xy#xy&sid=add189efae1fe98da1d98fd
(dans les anciennes distributions de phpBB) et qui devenaient
Code: Tout sélectionner
viewtopic.t__xy#xy-sid__add189efae1fe98da1d98fd.html
avec la technique de départ et
Code: Tout sélectionner
viewtopic.t__xy.html#xy&sid=add189efae1fe98da1d98fd
avec la première correction.
Maintenant ça fera:
Code: Tout sélectionner
viewtopic.t__xy-sid__add189efae1fe98da1d98fd.html#xy
ce qui est correct ;-)

Si les googlebots lisent ces pages , tu vas te retrouver avec plus de 1.000.000 différentes pour un même sujet ... Là ça doit être moins apprécié !
Même pour tes utilisateurs , il se pose le problème des liens faits dans les posts : les liens contenant un sid conduiront le plus souvent à une session invalide s'ils sont utlisés par d'autres personnes ou lors d'une session ultérieure .

A noter que même dans la dernière version de phpBB, passer des urls contenant des '#' (indiquant où le navigateur doit se placer dans la page) à append_sid() est foireux... La correction que les programmeurs ont faite consistait à s'assurer qu'aucune '#' ne lui était passés... (problème lors des redirections du type viewtopic.php?t=xy&view=newest dans les anciennes distributions)

Qu'est ce que tu entends par foireux ?
C'est entièrement fonctionnel tant quie #var est à la compète fin de l'url .

Lord Farquaad
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 124
Inscription: Sam Mai 01, 2004 2:54

Message le Ven Mai 07, 2004 18:10

Pour les sid: en effet, ça j'avais bien compris, donc je conseille le mod que tu m'as proposé pour éviter que les invités aient un identifiant de session dans les urls ;-) Je l'ai d'ailleurs déjà installé :-).
Ce qui tombe bien, c'est qu'il modifie le même fichier que moi: sessions.php (logique :roll:)

J'entends par foireux la première URL que tu recopies dans la citation: normalement le sid est perdu de cette façon ! La fonction append_sid ne se soucie pas qu'il y ait des '#' dans les urls, or normalement Apache coupe les urls à partir de ce '#' (puisque ce sont des infos qui ne servent à rien...)

Tu n'as qu'à tester sur ce forum-ci: tu désactives les cookies, tu te reconnectes, tu te rends sur l'index et tu cliques sur le lien '>>' (dernier message) d'un forum... normalement tu seras déloggé :roll:

PhpBB & URL rewrting: LA solution simple

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google Search Appliance, Picasa Web Albums

  • Transformer des citations en liens
    Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).
  • Calcul du nombre de backlinks
    Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées.


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités