16/12/2024

Apache

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.

author avatar
Mickael Dorigny Co-founder
Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

5 commentaires sur “Redirection de tout un répertoire en .htaccess

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.