Balise rel=« nofollow » pour les liens

pour mieux éviter le spam sur les commentaires, ou au moins tenter de décourager les spammeurs.

Malgré les différentes mesures de sécurité, les spammeurs sont toujours à l’affut, notamment des formulaires de commentaires sur les articles ...

Nota SPIP-Contrib  : Cette contrib à fait débat avant sa publication sur les sujets de la consommation de ressources engendrée par les expressions rationnelles, et de son efficacité réelle contre les spammeurs. Il apparaît que ce débat sera plus profitable et instructif pour tous mené via le présent forum public plutôt qu’en privé, d’où cette mise en ligne. A noter pour exemple que cette méthode est utilisée entre autres sur Wikipedia pour la gestion des liens sortants.

Mise à jour : Lors du débat concernant cette fonctionnalité, on m’a très justement fait remarquer que l’utilisation de l’expression eregi_replace n’était pas forcément adaptée. Le code ci-après a donc été modifié par la fonction str_replace qui par contre l’est plus.

Principe

Suite au spam massif des commentaires de blogs (Une catégorie de spammeurs cherche principalement à obtenir des liens vers leurs sites afin d’en accroitre la popularité) , les principaux moteurs de recherche (Google, Yahoo, MSN) se sont entendus en 2005 afin de mettre en place une balise HTML « bloquante » sur certains liens. Cette dernière permet en quelques sortes de signaler aux moteurs de recherche qu’un lien ne doit pas être suivi et donc pas pris en compte dans le calcul de popularité d’un site web. Cette balise est rel=nofollow et s’emploie de la sorte :

<a href='http://www.site.tld' rel='nofollow'>site à visiter</a>

Ce code rel=« nofollow » n’empêche bien entendu pas les visiteurs ou spammeurs de poster des liens, mais cherche surtout à décourager ceux qui ne cherchent qu’à accroitre la popularité de leur site, en leur faisant savoir que les liens posés ne seront pas pris en compte par les moteurs

Afin de protéger les commentaires d’un de mes sites j’ai donc mis au point une petite fonction toute simple qui permet de rajouter un rel="nofollow" sur tous les liens présents dans le texte.

Pour utiliser cette fonction vous devez donc avoir à la racine de votre site SPIP un fichier mes_fonctions.php (à partir de la version 1.9) ou mes_fonctions.php3 pour les versions antérieures. Si ce fichier n’existe pas créez le. Vous pouvez avoir un topo sur l’utilisation de ce fichier sur le site officiel SPIP : http://www.spip.net/fr_article901.html

Installation

Dans ce fichier vous mettez ces quelques lignes :

<?

// Ajout de  nofollow sur les liens (pas mal à utiliser  sur les commentaires pour éviter le spam)

function nofollow($texte){

   $texte=str_replace("<a href","<a rel='nofollow' href",$texte);
   

   return $texte;

} 

?>

Utilisation

Vous pouvez alors utiliser ce filtre comme un filtre normal sur les balises de texte et principalement comme moi les commentaires de vos articles

[(#TEXTE|nofollow)]

Si vous souhaitez également mettre cette balise nofollow sur le lien hypertexte proposé dans le forum allez dans le squelette inc_forum.html et cette fois-ci rajouter rel=« nofollow » dans le lien texte

<:voir_en_ligne:> : <a href="(#URL_SITE)" class="spip_out" rel="nofollow">[(#NOM_SITE|sinon{[(#URL_SITE|couper{80})]})]</a>

Mais là rien à voir avec la fonction présenté ci-dessus.

Pour vos utilisateurs

Signalez quelque part sur votre site que des rel=« nofollow » sont placés sur les liens des commentaires.

Quelques ressources traitant de la balise rel=« nofollow »

La spécification rel=« nofollow »

-  http://microformats.org/wiki/rel-nofollow-fr
-  http://googleblog.blogspot.com/2005/01/preventing-comment-spam.html

Discussion

6 discussions

  • Faudrait carrement mettre des liens javascript dans des fichiers externes, perso j’ai supprimer les comments tellement j’avais de spam

    Répondre à ce message

  • Suite au débat en off, l’auteur a fait évoluer le code, après une remarque judicieuse de Nicolas.
    Les changements sont notés en haut de page dans l’encart.

    L’article a aussi été un peu plus documenté sur l’utilisation de la balise rel=nofollow et son usage face au spam.

    Répondre à ce message

  • « Cette contrib à fait débat avant sa publication sur les sujets de la consommation de ressources engendrée par les expressions rationnelles, et de son efficacité réelle contre les spammeurs. »

    Si cet article a fait débat, cela fut en l’absence totale de son auteur, qui ne s’est plus manifesté après avoir rédigé l’avoir écrit, ne serait-ce pour corriger les coquilles évidentes.

    Répondre à ce message

  • 1

    bonjour

    je ne comprend pas ,quand je mets rel=nofollow parfois cela marche et d’autres fois non
    ou faut il le mettre au debut du lien et a quel niveau
    par exemple dans ce lien on le met ou
    http://www.fvd.fr/

    • vous pouvez le mettre où vous souhaitez dans votre lien. J’ai pris l’habitude de le mettre de suite après <a mais cela peut très bien être après le href ou le title le cas échéant.
      Il est possible que le moteur de recherche ait tout de même suivi le(s) lien(s) :
      -  avant que vous n’installiez la balise rel="nofollow"
      -  à partir d’autres pages ou liens ne présentant pas l’attribut
      -  parce que bon lui semble. On a déjà remarqué que Google suivait une partie des liens nofollow à sa guise, il ne transmettrait pas le jus de popularité à l’url par contre. Il n s’agit pas d’une balise noindex (qui n’existe d’ailleurs pas sur un attribut lien (<a>), seulement dans ma balise meta <title>

    Répondre à ce message

  • 1

    Bonjour à tous,

    J’ai le code suivant dans mes boucles d’articles :

    [(#SURTITRE|nofollow)]<br />
    [(#SOUSTITRE|nofollow)]

    Il y a un truc qui m’échappe avec cette balise :

    Quand je rentre des liens SPIP dans le SURTITRE d’un article, par exemple [nom du lien->url du lien], le lien s’affiche bien.

    Par contre, quand je rentre le lien de la même façon dans le SOUSTITRE, là par contre le lien ne s’affiche plus et je vois apparaitre dans l’article [nom du lien->url du lien] !

    Qqun peut-il m’aider SVP ?
    Un grand merci d’avance !

    • Problème résolu, il suffisait d’appliquer (#SURTITRE*|propre|nofollow) ou (#SOUSTITRE*|propre|nofollow), en fait c’est pareil pour les 2 ...

    Répondre à ce message

  • 4
    Risotto

    Bonjour
    A l’inverse, je désire enlever le « nofollow » sur les liens de mon pied de page ou dans le plan de mon site. Comment faire ? Car pour un bon référencement je suis embêté...

    • rubenxela

      Il vous faut aller dans le dossier de squelette : DIST/ ou SQUELETTE-DIST/ selon votre version et modifier cela directement dans les squelettes . Il me semble inc-pied.html pou le bas de page et certainement plan.html pour le plan de site .

    • Risotto

      Merci. J’ai bien sûr regardé ces fichiers mais justement, je ne trouve rien qui crée des liens « nofollow ». Pourtant ceux-ci apparaissent en « nofollow » lorsque je vérifie (Firefox avec extension Quirk SearchStatus) donc je pensais à une fonction cachée dans le moteur de spip, peut-être en rapport avec les liens « spip_out » ou je ne sais quoi... merci en tout cas pour ta réponse et pour les futures :)

    • rubenxela

      Déjàdans plan.html si tu veux que la page soit indexée tu dois changer la balise meta

      <meta name="robots" content="none" />
      en
      <meta name="robots" content="index,follow,all" />

      et dans inc-pied.html tu verras dans la structure des liens qu’il y l’attribut
      rel="nofollow"
      que tu dois retirer sur chaque lien

      Exemple :

      <a href="#ENV{skel}" title="<:voir_squelette:>" rel="nofollow"><:squelette:></a>

      à changer en

      <a href="#ENV{skel}" title="<:voir_squelette:>"><:squelette:></a>

    • Risotto

      Merci

      Dans plan.html j’ai changé la balise meta, par contre dans inc-pied.html (spip 2.0) l’attribut rel=« nofollow » n’y apparaissait pas, mais parce que j’avais retiré le lien « voir le squelette ». Les autres liens sont donc suivis maintenant (plan, mentions légales). J’ai donc laissé tel quel et ça fonctionne visiblement.

      J’ai également ajouté un fichier robots.txt à la racine de mon site avec un contenu approprié, en plus.

      Merci encore !

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom