Il y a 5 jours j’ai mis mon site en ligne. Pour pouvoir finaliser le paramétrage tranquillement, j’avais bloqué la visibilité de site sur les moteur de recherche, notamment Google. Cette option est disponible sous l’onglet Réglages - > Vie privée de WordPress. À ma grande surprise, quand je me suis connecté aux outils de web-master de Google le fichier robots.txt de mon site a déjà bloqué son indexation…
Pas de panique, si le robot Google a passé sur votre site avant que vous avez eu le temps de modifier l’option de visibilité, une fois cette option est changée, tôt ou tard Google va repasser pour indexer votre site. Mais bon, je comprends tout à fait, que de voir votre site bloqué pendant quelque temps par votre propre fichier robots demande les nerfs en acier…
Je fais quelques recherches sur Internet qui m’ont fait voir que il y a pas mal de gens qui pensent que le fichier robots.txt d’un site sous WordPress est un fichier réel qui doit être placé à la racine de votre site… En fait, WordPress génère ce fichier à la demande en utilisant la fonction do_robots().
Cela veut dire, que vous ne pouvez pas le trouver sur votre site puisqu’il est virtuel. Cela complique les choses quand on a besoin de le modifier pour affiner les réglages d’indexation. Bien sûr, on peut le créer à la main et placer à la racine de votre site, mais cette solution n’est pas la meilleure.
Voici un code PHP qui permet de modifier votre fichier virtuel robots.txt sans devoir modifier les fichiers de noyau de WordPress (ce que je vous déconseille fortement) ou utiliser des plugins superflus. Tout simplement copiez – collez ce code dans dans le fichier fonction.php de votre thème.
<?php //filtrer le contenu de robots.txt function custom_robots($output) { $public = get_option( 'blog_public' ); if ( '0' != $public ) return str_replace('Disallow:','Allow: /',$output); } add_filter('robots_txt','custom_robots',0);
Ce code – c’est un filtre PHP qui modifie le contenu du fichier robots.txt généré par WordPress. Le principe est simple – variable $output à la rentrée de la fonction contienne le texte de ce fichier. Ce que la fonction retourne – c’est le nouveau contenu du fichier robots.txt. Dans cet exemple – le Disallow: est remplacé par Allow: / en fonction de l’option de la visibilité de votre site que vous avez choisie.
Comme la priorité pour ce filtre est 0, il sera appliqué en premier. Ce que n’empêche pas aux plugins de faire leurs propres modifications par la suite. Par exemple, Google (XML) Sitemaps Generator for WordPress ajoute une ligne à la fin de votre fichier robots.txt. Cette ligne contienne l’adresse de votre plan de site fourni pour Google pour assurer la meilleure indexation de vos pages et articles.
Comme vous le voyez, en utilisant un filtre comme celui-ci vous avez le contrôle total sur le fichier robots virtuel qui est généré par WordPress. À vous de modifier la fonction PHP pour correspondre à vos besoins. N’hésitez pas à poser vos questions dans les commentaires.
À bientôt.
Chargement
{ 11 commentaires… lire les plus bas ou ajouter un }
Je cherchais justement à ajouter des Disallow pour les dossiers wp-content, wp-admin et wp-includes sans pour autant empêcher le plugin sitemap xml google d’écrire à la fin sa ligne de code.
Merci! Code clair et cela évite d’ajouter (encore) un autre plugin
Hello,
Très intéressant ton code, merci !
Quelles sont les modifs à faire ds ton fichier pour ne pas indexer /wp-admin/ et /wp-includes/ par exemple ?
Merci
Hey,
@Antoine tu peux essayer ce code :
//filtrer le contenu de robots.txt function custom_robots($output) { $output .= ' User-Agent: * Disallow: /wp-admin/ /wp-includes/'; return $output; } add_filter('robots_txt','custom_robots',0);Merci Serge pour ton code.
Par contre, si on fait “$output .= …”
ça laisse dans le robots.txt le User-Agent et le Disallow existant.
J’ai donc remplacé le .= par = et ça marche. J’espère que j’aurai pas de problème à cause de ça :s
Tu a raison. Merci pour la correction. Non, cela va pas poser le souci.
alors si ça pose pas soucis je laisse comme ça
merci
Bonjour,
Je voudrais integrer dans mon robots.txt les lignes suivantes:
User-agent: Mediapartners-Google
Disallow:
Si j’utilise votre code php en y inserant ces deux lignes, j’ai un message d’erreur. Je me doute bien qu’il doit me manquer un caractere quelconque quelque part mais je n’ai pas les connaissances necessaires pour trouver la solution par moi-meme. Une idee?
//filtrer le contenu de robots.txt
function custom_robots($output) {
$output .= ‘
User-Agent: *
Disallow: /wp-admin/
/wp-includes/’;
User-agent: Mediapartners-Google
Disallow:
return $output;
}
add_filter(‘robots_txt’,'custom_robots’,0);
//End filtrer le contenu de robots.txt
Salut, le problème dans ton code est que tu a casse la chaine des caracteres qui doit representer le contenu du fichier :
$chaine = ‘text ici’;
ta chaine est comme ceci
$chaine = ‘text’;
ici
la partie ici du coup est interpreté comme du php – d’ou l’erreur.
Essay ce code à la place :
/* filtrer le contenu de robots.txt */ function custom_robots($output) { $output .= ' User-Agent: * Disallow: /wp-admin/ /wp-includes/ User-agent: Mediapartners-Google Disallow:'; return $output; } add_filter('robots_txt','custom_robots',0); /* End filtrer le contenu de robots.txt */mais je ne garantie pas que le contenu du ton robot txt est ok pour ce que tu essay de faire (à verifier avec webmaster tools)
à plus
Merci pour ces infos, c’est vraiment très pratique.
de rien
{ 2 trackbacks }