Changements climatiques… BOUML
sept 17

WordpressLes fichiers .htaccess permettent de personnaliser le comportement du serveur Apache qui héberge vos pages Internet. Dans un blog géré par Wordpress celui-ci est largement utilisé pour réécrire les url, regardez simplement l’url de cette page… http://www.blue-pen.net/2007/09/17/personnaliser-son-htaccess-avec-wordpress … Le blog ne la comprend pas telle quelle. Il la transforme d’abord.

Ce n’est pas la seule possibilité des fichiers .htaccess. On peut également les utiliser pour protéger certains fichiers ou dossiers par mot de passe ou forcer certaines redirections tout en les rendant permanentes. C’est exactement ce que je souhaitais faire…

Il se trouve que les pages de Blue Pen étaient doublement indexées, une fois avec l’adresse http://blue-pen.net/… et avec http://www.blue-pen.net/… Le problème ne venait pas de Wordpress qui utilise des adresses de type http://www.blue-pen.net/… mais de sites tiers qui pointent des liens vers mon blog avec l’adresse http://blue-pen.net/…

Les moteurs de recherche en général, et Google en particulier n’aiment pas la duplication de contenu, je devais donc absolument ajouter les instructions à mon .htaccess pour rendre toutes les adresses conformes au modèle http://www.blue-pen.net/… sans perturber le comportement de Wordpress lui même.

Le fichier, avant modification ressemblait à ceci :

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Il convient simplement de ne pas modifier les lignes comprises entre # BEGIN Wordpress et # END Wordpress. J’ai simplement rajouté avec le # BEGIN Wordpress les instructions suivantes :

RewriteCond %{HTTP_HOST} !^www.blue-pen.net$
RewriteRule ^(.*) http://www.blue-pen.net$1 [QSA,L,R=301]

Je ne vais pas détailler la syntaxe, mais les flags du RewriteRule sont intéressants…

  • QSA : Force l’ajout d’une chaine de caractères plutôt que sa réécriture. Ceci permet donc de conserver la suite de l’adresse telle que l’utilisateur l’a frappée ou comme dans le lien sur lequel il a cliqué. Sans ça le visiteur risquerait de se retrouver sur la page d’accueil plutôt que sur celle qu’il avait demandé
  • L : indique que cette redirection est la dernière à appliquer sur l’URL, celà permet qu’elle ne soit pas contredite par une autre règle. Ici dans la suite du fichier .htaccess nous avons les règles d’écriture de Wordpress, mais qui touchent les noms du fichier et pas le domaine du site… pas de problèmes donc
  • R : Force la redirection en renvoyant l’adresse au client. Typiquement celà permet de la réécrire également dans la barre d’adresse du navigateur client, mais aussi grâce au code 301 que les moteurs de recherche prennent en compte cette redirection permanente à l’avenir

Si vous souhaitez aller plus loin avec la redirection d’adresses je vous renvoie directement dans la documentation d’Apache, au paragraphe RewriteRule.

3 commentaires pour “Personnaliser son .htaccess avec Wordpress”

  1. Nicolas a dit :

    Si vous souhaitez aller plus loin dans le référencement de votre blog basé sur Wordpress je vous invite à lire cet article sur wordpress-tuto.fr :
    http://wordpress-tuto.fr/maat-cuuts-referencement-wordpress-seo-215

  2. Nstl a dit :

    Bonjour, je débute un peu et j’ai une question, vous dites : Il convient simplement de ne pas modifier les lignes comprises entre
    # BEGIN Wordpress et # END Wordpress.” et de rajouter les lignes :
    RewriteCond %{HTTP_HOST} !^www.blue-pen.net$
    RewriteRule ^(.*) http://www.blue-pen.net$1 [QSA,L,R=301]

    Elles doivent donc remplacer 2 lignes fichier existant êtres mises à la suite ? ou rajouter les lignes par la suite ? ce n’est pas très clair pour moi :) Pourriez-vous me renseigner svp ?

    Je penche pour ce fichier la au final ? sera-il fonctionnel ? pas trop envie de faire une bétise pour tout vous dire :)

    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{HTTP_HOST} !^www.blue-pen.net$
    RewriteRule ^(.*) http://www.blue-pen.net$1 [QSA,L,R=301]

    # END WordPress

    Merci,

  3. Nicolas a dit :

    Ca fonctionnera très bien effectivement. Cependant je vous conseille de faire vos modifications à l’extérieur du bloc #BEGIN WordPress … #END WordPress

    Dans votre exemple ça donnerait :

    RewriteCond %{HTTP_HOST} !^www.blue-pen.net$
    RewriteRule ^(.*) http://www.blue-pen.net$1 [QSA,L,R=301]

    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f

    # END WordPress

    En remplaçant blue-pen.net par le domaine de votre site bien sûr ;)

Répondre