Comment faire une redirection permanente 301 via .htaccess ? (avec exemples à copier)

Vous souhaitez faire des redirections 301 via le fichier .htaccess et avez besoin d’un petit coup de pouce et d’exemples concrets pour vous en sortir ? Voici une liste de plus de 13 exemples concrets avec le code à ajouter dans le .htaccess afin de configurer des redirections 301 efficaces et très utiles pour le référencement de votre site internet.

Sommaire :

Retour sur les bases : qu’est-ce qu’une redirection 301 et à quoi ça sert concrètement ?

Les redirections 301 (ou redirections permanentes), sont, à l’inverses de redirections temporaires 302 des redirections qui servent à indiquer à Google qu’une page a été supprimée ou déplacée définitivement et qu’une nouvelle page proche est disponible.

Ce type de redirection est très utile en référencement puisqu’il permet de transmettre au maximum l’historique, le positionnement et les liens de l’ancienne page à la nouvelle vers laquelle la redirection 301 est faite.

Comment faire une redirection 301 « simple » (de page à page) via le fichier .htaccess ?

Pour faire une redirection 301 simple depuis le fichier .htaccess (fichier qui se trouve à la racine de l’hébergement de votre site internet et qu’il est possible de récupérer et modifier via un accès FTP), il vous suffit de suivre cette trame en remplacant l’emplacement de départ et celui d’arrivée :

RedirectPermanent /webmarketing/seo/seo-google-confirme-mise-a-jour-algorithmique-1er-aout-2018-13953/ https://www.leptidigital.fr/webmarketing/seo/seo-google-confirme-mise-a-jour-algorithmique-1er-aout-2018-13756/

La directive RedirectPermanent du fichier .htaccess, qui génère une redirection 301 permanente, peut être placée à n’importe quel endroit du fichier .htaccess.

Dans notre exemple, nous indiquons que nous souhaitons rediriger la page /webmarketing/seo/seo-google-confirme-mise-a-jour-algorithmique-1er-aout-2018-13953/ vers cette URL :https://www.leptidigital.fr/webmarketing/seo/seo-google-confirme-mise-a-jour-algorithmique-1er-aout-2018-13756/ car l’ID de l’article a changé mais nous ne souhaitons pas perdre l’historique de ce dernier ni son éventuel positionnement SEO.

Cette même redirection peut également être effectuée en utilisant le code suivant qui aura pour finalité de faire exactement la même chose :

Redirect 301 /webmarketing/seo/seo-google-confirme-mise-a-jour-algorithmique-1er-aout-2018-13953/ https://www.leptidigital.fr/webmarketing/seo/seo-google-confirme-mise-a-jour-algorithmique-1er-aout-2018-13756/

Mises en garde lors de la modification du .htaccess pour configurer des redirections 301 :

  • Modifier le fichier .htaccess de votre site internet n’est pas anodin, une mauvaise manipulation peut rendre votre site inaccessible. Si vous n’êtes pas sûr de vous et par précaution : avant toute modification, nous vous recommandons vivement de faire un backup de votre fichier .htaccess d’origine pour pouvoir le ré-importer via FTP en cas de problème.
  • Si vous avez de nombreuses redirections 301 à effectuer et que vous avez accès au VHOST de votre hébergement, il est vivement recommandé de configurer les redirections 301 par ce biais là pour éviter tout impact sur le temps de chargement de votre site internet. Plus le fichier .htaccess est lourd, plus votre site internet peut en pâtir.

10 exemples de règles de redirection utiles à copier-coller

1- Comment rediriger toutes les pages d’un site vers leur version HTTPS en 301 ?

Ce code à ajouter dans le fichier .htaccess va automatiquement configurer les redirections 301 de la version sans HTTPS vers la version avec et de la version sans www vers la version avec en HTTPS. Toutes les pages HTTP seront redirigées en 301 vers leur équivalent en HTTPS.

Redirection de la version HTTP vers HTTPS :

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !
RewriteRule ^(.*)$ https://www.leptidigital.fr/$1 [R=301,L]

Forcer le www sur HTTPS :

RewriteEngine On
RewriteCond %{HTTP_HOST} ^leptidigital.fr [NC]
RewriteCond %{REQUEST_URI} !
RewriteRule ^(.*)$ https://www.leptidigital.fr/$1 [L,R=301,NC]

Bien entendu, pour que ce code fonctionne sur votre site, il vous faudra remplacer toutes les occurences de LEPTIDIGITAL et également bien veiller à remplacer l’extension de nom de domaine par la vôtre.

2- Comment rediriger uniquement certaines pages en 301 vers HTTPS ?

Ce code à placer dans votre fichier htaccess vous permet de faire une redirection 301 sélective de pages et dossiers vers le HTTPS, si vous ne souhaitez pas tout basculer d’un coup :

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} ^/exempledepage.html$ [OR]
RewriteCond %{REQUEST_URI} ^/dossier/page-2.php$ [OR]
RewriteCond %{REQUEST_URI} ^/dossier-2/(.*)$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

3- Comment rediriger un domaine entier vers une seule et même page ?

Ce code redirigera l’intégralité des pages et fichiers du domaine vers la page d’accueil de LEPTIDIGITAL (c’est un code utile pour rediriger un domaine enregistré avec un autre TLD par exemple afin de rediriger tout le trafic vers le domaine principal) :

Redirect 301 / https://www.leptidigital.fr/

4- Comment rediriger en 301 son nom de domaine sans www vers la version avec les www ?

Pour ajouter les www devant un nom de domaine, il conviendra d’ajouter cette règle le plus haut possible dans le htaccess :

RewriteEngine on
RewriteBase /
RewriteCond %{http_host} ^leptidigital.fr [nc]
RewriteRule ^(.*)$ https://www.leptidigital.fr/$1 [r=301,nc]

5- Comment rediriger en 301 son nom de domaine avec www vers la version sans les www ?

Cette règle de redirection fera l’effet inverse de la précédente (il est préférable de l’ajouter le plus haut possible dans le fichier htaccess).

RewriteCond %{HTTP_HOST} !^leptidigital.fr$ [NC]
RewriteRule .? https://leptidigital.fr%{REQUEST_URI} [R=301,L]

6- Rediriger d’anciens répertoires vers de nouveaux en 301

RewriteRule ^/?ancien_repertoire/([a-z/.]+)$ nouveau_repertoire/$1 [R=301,L]

7- Comment rediriger un répertoire ou dossier complet vers la homepage ?

Pour rediriger un dossier complet en 301 vers la racine de son site et donc sa page d’acceuil, il suffit de modifier dans la règle htaccess suivante le nom du dossier pour que l’intégralité des pages intégrées dans ce répertoire soient redirigées de manière permanentes vers la racine du site :

RewriteRule ^dossier/(.*)$ / [R=301,NC,L]

8- Comment rediriger toutes les URLs d’un répertoire ou dossier vers les mêmes URLs sans ce nom de dossier dans l’URL ?

Pour supprimer un nom de dossier d’une URL tout en gardant le reste de l’URL suivant le dossier dans l’URL, voici le code htaccess à utiliser :

RewriteRule ^dossier/(.*)$ /$1 [R=301,NC,L]

Voici un exemple concret du résultat que cela donnera :

  • Avec ce code, l’URL https://www.leptidigital.fr/dossier/redirections-301-htaccess redirigera en 301 vers https://www.leptidigital.fr/redirections-301-htaccess

9- Comment rediriger en 301 toutes les pages en changeant l’extension de fichier (HTML vers PHP par exemple) ?

Cette directive va rediriger en 301 l’intégralité des pages avec l’extension .html vers leur équivalent avec l’extension .php :

RedirectMatch 301 (.*)\.html$ http://www.leptidigital.fr$1.php

10- Rediriger toutes les extensions .php et .html vers l’URL sans

Cette règle est valable si vous avez des urls qui se terminent à la fois par .php ou .html dans certains cas et que vous ne souhaitez pas afficher d’extension à la fin de vos URLs :
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^/?([a-zA-Z0-9]+)$ $1.php [L]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^/?([a-zA-Z0-9]+)$ $1.html [L]

11- Forcer le trailing slash à la fin des URLs pour éviter d’avoir deux URLs identiques avec le même contenu

Cette règle de réécriture est très utile pour forcer toutes les URLs du site sans « / » à la fin à en avoir un. Cela évite le duplicate content et c’est donc meilleur pour votre référencement naturel.
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]

12- Comment rediriger en 301 des URLs avec des Query Strings vers des URLs sans ?

Ce code permettra de rediriger en 301 toutes les pages qui contiennent ?categorie= dans l’URL vers leur équivalent sans query string :

RewriteEngine On
RewriteRule ^/?categorie/([^/d]+)/?$ index.php?categorie=$1 [L,QSA]

Exemple :

URL originale avant activation de la règle : http://www.leptidigital.fr/index.php?categorie=seo

URL de destination une fois la règle active : http://www.leptidigital.fr/categorie/seo/

13- Comment rediriger en 301 un blog en sous-domaine vers un nouveau domaine avec le blog en répertoire ?

Cette directive .htaccess est à placer dans le répertoire contenant le blog en sous-domaine :

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI}/ blog
RewriteRule ^(.*) https://www.leptidigital.fr/%{REQUEST_URI} [R=301,NC]
RewriteRule ^(.*) https://www.leptidigital.fr/blog/%{REQUEST_URI} [R=301,NC]

Ce code à adapter agira de la sorte :

  • Toutes les pages accessibles sur une url de type blog.example.com seront redirigées en 301 vers leur équivalent sur le nouveau domaine et répertoire : https://www.leptidigital.fr/blog/

Comment tester vos règles de redirection 301 via htaccess avant de les passer en ligne ?

Pour limiter les risques de planter votre site internet (le fichier .htaccess est très sensible), nous vous recommandons vivement de tester vos règles de redirection 301 htaccess avec cet outil en ligne très simple et efficace : https://htaccess.madewithlove.be/

tester redirection 301 htaccess
Aperçu de Htaccess Tester, un outil gratuit en ligne pour tester vos redirections 301 configurées via htaccess

Pour utiliser cet outil et tester vos règles de redirection avant qu’elles ne soient actives en production, il vous suffit de :

  • copier – coller le code que vous avez adapté dans la section « Paste your .htaccess rules into the form » (qui signifie littéralement « Collez vos règles .htaccess dans le formulaire« ),
  • tester l’URL de votre choix qui devrait être impactée par votre règle htaccess de redirection 301.

Voilà, vous pouvez ainsi vous assurer avant modification de votre fichier .htaccess que vos règles fonctionneront exactement comme vous le souhaitez.

(Oui, l’outil n’est pas Français ni Anglais, mais Belge, comme quoi, les belges ont aussi de bons développeurs / référenceurs dans leurs rang 😉 … (joke ofc).

Vous avez besoin d’un autre code pour bien rediriger toutes vos pages en 301 via le fichier .htaccess ? N’hésitez pas à laisser un petit commentaire, nous vous répondrons avec plaisir !

Tu souhaites recevoir nos meilleurs articles ?

8 Replies to “Comment faire une redirection permanente 301 via .htaccess ? (avec exemples à copier)”

  • Jack Frelira a dit :

    Merci pour toutes ces informations !

    Mais impossible de les appliquer pour faire en sorte que :
    -> tous les liens vers la racine d’un site https ou http://www.mondomaine.com
    aillent vers
    -> https://www.mondomaine.com/PARICI

    J’ai tenté un redirect 301 / https://www.mondomaine.com/PARICI et il tourne puis me colle un https://www.mondomaine.com/PARICI/PARICI/PARICI/PARICI/PARICI/PARICI/PARICI/PARICI/PARICI/PARICI/PARICI/PARICI/PARICI

    Une idée ?

    Merci,

    • Vincent Brossas a dit :

      Bonjour Jack,

      Pouvez-vous essayer cette autre règle de redirection 301 svp ? (si vous souhaitez mettre en place une redirection temporaire, il vous suffira de remplacer le 301 par 302.

      RewriteRule ^(.*)$ https://www.mondomaine.com/parici [R=301,L]

      Cela devrait marcher ;).

      Bonne journée,

      Vincent

  • Patrick a dit :

    Bonjour,

    J’ai un quadruple problème de redirection permanente à résoudre :

    1 – rediriger tout http vers https
    2 – rediriger tout www vers [idem sans www]
    3 – rediriger tout ce qui irait dans l’ancien sous dossier [xxx] vers [idem à la racine du site]
    4 – rediriger tout les accès à des pages new*.html vers le même nom en php (pages new1,new2,new17,…)

    Avec 2 contraintes :

    1 – Si redirection, il faut que ca transmettre aussi toujours des éventuels paramètres d’url (toto.php?x=1&y=2)

    2 – Il faut que les 4 règles s’appliquent cumulativement, par exemple un accès à http://www.mon_site.com/xxx/new1.html doit aboutir à https://mon_site.com/new1.php (les 4 règles ont été appliqués)

    J’ai essayé du code et je suis vite revenu en arrière car je bloquait tout !

    Merci de votre aide.

    • Vincent Brossas a dit :

      Bonjour Patrick,

      Vous n’avez pas trouvé les réponses à vos problématiques de redirections 301 avec les différents exemples proposés ? Ils correspondent pourtant à vos problématiques.

      Si vous n’êtes pas trop à l’aise avec ce type de redirections, je vous conseille de vous rapprocher d’un professionnel (développeur ou référenceur indépendant avec un profil technique).

      Bonne journée

  • David a dit :

    Bonjour,
    Merci pour cet article qui m’a appris pas mal de choses.
    Pour ma part, j’effectue une redirection 301 de la manière suivante :
    Redirect 301 /anciennepagedusite.htm https://nouveausite.fr/nouveaunomdepage

    Mais le problème c’est qu’au final l’àcienne page est renvoyée vers :
    https://nouveausite.fr/anciennepagedusite.htm

    Du coup j’ai une erreur 404.

    Une idee? J’ai peut etre mal fait les choses ?

    • Vincent Brossas a dit :

      Bonjour,

      Avez-vous configuré les redirections de la version HTTP vers la version HTTPS avant d’effectuer cette règle ? N’hésitez pas à désactiver temporairement cette règle si c’est le cas pour valider que le problème vient de là et modifier votre dernière règle.

      Bonne journée,

      Vincent

  • Delors a dit :

    Bonjour,
    Merci pour cesinformations très claires
    Cependant, je ne parviens pas à régler mon soucis
    J’avais un site en .com/en et /es
    J’ai séparé ces 2 sites grace au multiboutique de prestashop et n’ai donc plus d’extension de langue
    Comment dois faire pour le /en (qui avait déjà plusieurs mois) redirige vers le .com?
    Et le /es vers le nouveau nom de domaine?

    J’ai tenté ceci
    Redirect 301 /XXXX.com/en/ https://www.XXXX.com/
    Redirect 301 /XXXX.com/es/ https://www.YYYY.es/

    Mais ça ne fonctionne pas
    Merci d’avance pour votre aide

    Muriel

  • Pat a dit :

    Bonjour,

    Je possède un NAS Synology chez un hébergeur. Je l’ai configuré pour y accéder avec l’URL « dsm.mondomaine.tld » en passant par le proxy inversé. Jusque là, pas de soucis, tout fonctionne bien. Auparavant, je tapais « mondomaine.tld:numero_du_port ».

    Là où ça se corse : depuis que j’ai configuré ainsi, je ne peux plus ouvrir les applications installées dans le DSM (DiskStation Manager), elles s’ouvrent dans un nouvel onglet avec « dsm » au début de l’URL.
    Par exemple, pour WordPress ça me donne « dsm.mondomaine.tld/wordpress » alors qu’auparavant l’URL était « mondomaine.tld » avec ou sans « www ».
    J’utilise le VirtualHost dans la Webstation pour que « mondomaine.tld » et « www.mondomaine.tld » pointent vers le dossier « web/wordpress ». De ce côté ça ne me pose pas de soucis, je peux toujours accéder à WordPress grâce aux 2 dernières URL indiquées.

    Maintenant, ma question : est-il possible en passant par le « htaccess » de définir une redirection pour toutes les URL commençant par « dsm » afin de les rediriger vers « mondomaine.tld/application » par exemple ? A l’exception de l’URL « dsm.mondomaine.tld » qui me permet d’accéder à l’interface de mon NAS Synology 🙂

    J’espère que mes explications sont compréhensibles, si besoin j’y apporte volontiers des précisions.

    Merci d’avance pour toute aide !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *