Redirection de tout un répertoire en .htaccess

I. Présentation

Un site web est quelque chose de vivant, il arrive donc que certains dossiers, répertoires ou pages autrefois utilisés deviennent obsolètes et amènent alors à une page de type erreur 404. Pour cela, il est recommandé de mettre en place des redirections 301. Nous allons ici voir comment mettre une redirection 301 sur tout un répertoire.

II. Rediriger un répertoire via des règles 301

Le fait de vouloir rediriger tout un répertoire vers une nouvelle URL évite souvent d'oublier des URLS et de se retrouver alors avec des utilisateurs qui pensent que votre site web n'est plus maintenu ou obsolète, cela permet également aux robots de revenir sur des pages valables.
Lorsque je parle de "tout un répertoire", je veux dire que les URL suivantes :

  • www.site.test/rep1/
  • www.site.test/rep1/page-de-test.php
  • www.site.test/rep1/sous-rep1/
  • www.site.test/rep1/sous-rep1/page-de-test2.php

seront toutes redirigées vers une même URL valide.

Note : La redirection via Htacess possède quelques pré-requis :

- Prise en compte du .htaccess dans Apache

- Activation du mod_rewrite dans Apache

Nous allons donc ouvrir notre .htaccess pour le modifier et nous allons ajouter une ligne comme celle-ci :

RedirectMatch 301 ^/rep1/.* http://www.site.test/rep2

Nous utilisons ici la règle "RedirectMatch 301" pour spécifier qu'il s'agit d'un code HTTP 301 à envoyer aux clients. Un Code HTTP 301 signifie qu'il s'agit d'une redirection permanente, ces redirections sont d'ailleurs généralement mise en cache par les navigateurs web.
Nous utilisons ensuite quelques opérateurs propres ou regexp :

  • ^/rep1 : Permet de spécifier que seront prises en compte toutes les URL dont la partie hors domaine (www.site.test) commence par "/rep1"
  • rep1/.* : Permet de spécifier "tout", dans le sens "n'importe quel caractère, en n'importe combien de fois". Cela permet d'englober tout ce qui peut se trouver dans le répertoire visé. Pour être plus précis, le "." signifie "n'importe quel caractère" et le "*" spécifie "X fois ce qui précède". Donc X fois n'importe quel caractère.

A cela suit l'URL valide vers laquelle je souhaite rediriger mes utilisateurs.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Fondateur d’IT-Connect.fr et d’Information-security.fr.
Auditeur sécurité chez Amossys.

    mickael a publié 478 articles sur IT-Connect.See all posts by mickael

    3 réactions sur “Redirection de tout un répertoire en .htaccess

    • 18/08/2015 à 12:59
      Permalink

      Près de 30 minutes de recherche sur le net et enfin la solution pour rediriger un dossier vers une url ! Merci Mickael !

      Répondre
    • 05/06/2016 à 21:36
      Permalink

      Bonjour et merci,
      La ligne de commande fonctionne parfaitement, l’explication est claire et concise. Pour encore plus de clarté pour les non initiés comme moi, il s’agit d’ajouter cette ligne dans le .htaccess situé sous la racine du domaine.
      Bref, merci !
      Laurent

      Répondre

    Laisser un commentaire

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