écrire un fichier .htaccess

mode rewriting

Ce mode qui permet la ré-écriture des URL n’est pas forcément activé, sur wamp (en local, serveur apache) il faut l’activer

chez votre hébergeur il devrait l’être “par défaut”, afin de vous en assurer copier cette ligne dans votre .php de départ , vous aurez la liste des modules installés (pas forcément activés)

contenu du fichier .htaccess

<IfModule mod_rewrite.c>
# Commentaires
</IfModule>


C’est un bloc conditionnel, si l’option rewrite est disponible, alors on passe dans ce bloc

On peut activer le mode rewrite, dans le cas où cette option rewrite est disponible

<IfModule mod_rewrite.c>
# Cette option permet de ne pouvoir modifier ses URL
Options +FollowSymLinks
# activation du mode rewrite
RewriteEngine On
# RewriteBase permet de dire où se trouve le fichier .htaccess si “/” c’est à la base de votre site.
# sinon indiquez où il se trouve ex: dans le répertoire trucmuche => RewriteBase /trucmuche/
RewriteBase /
</IfModule>

Premiere action: accéder de manière uniforme au nom de domaine

Pour éviter tout problème de Duplicate Content, un bonne façon de faire est déjà de choisir d’accéder à son site via www ou sans www: préférais je : http://www.monsite.fr ou bien http://monsite.fr

Choisissons de bannir les www, un internaute qui entre http://www.monsite.fr sera automatiquement rediriger vers http://monsite.fr (avec au niveau protocole http un code 301)

<IfModule mod_rewrite.c>
# Cette option permet de modifier ses URL, elle peut déjà être activée par votre hébergeur
Options +FollowSymLinks
# activation du mode rewrite
RewriteEngine On
# Permet de dire où se trouve le fichier .htaccess si / c’est à la base de votre site
# sinon indiquez où il se trouve ex: dans le répertoire trucmuche => RewriteBase /trucmuche/
RewriteBase /
# RewriteCond vérifie si les conditions sont présentes, ici si HTTP_POST contient l’adresse du site comportant les www.
RewriteCond %{HTTP_HOST} ^www.monsite.fr [NC]
# RewriteRule comme son nom l’indique, précise les règles de réécriture. Elle n’est activée que si la rewriteCond est vérifiée
# RewriteRule Origine Destination de la commande
# ici Origine = (.*) et signifie “tout” ou quelque soit ce qui se présente, récupère l’ensemble de l’adresse demandée
# Destination = http://monsite.fr/$1 et signifie on renvoie vers les pages sans www. On renvoie avec un code 301 (qui signifie redirection)
RewriteRule (.*) http://monsite.fr/$1 [R=301,L]
</IfModule>

Dans le cas où la macro HTTP_POST contient l’adresse www.monsite.fr, c’est lacondition à vérifier, (RewriteCond) Alors je ré-écris (on va appliquer la règle: RewriteRule) l’adresse en enlevant les www


  • [NC] signifie No Case pour dire insensible à la casse
  • [R=301] signifie : R pour Redirection suivi du code par exemple “302″ => pour signifier que la ressource a été déplacée temporairement
  • [L] signifie Last. Signifie que c’est la dernière règle, les RewriteRule qui suivent éventuellement celle-ci seront ignorée (une sorte de break)

Une Réponse à “mode rewriting - htaccess”

  1. ajaxian-boy écrit:

    Merci.
    Je l ai placé et ca marche au poil.
    sympa

Laisser un message