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.
Près de 30 minutes de recherche sur le net et enfin la solution pour rediriger un dossier vers une url ! Merci Mickael !
Bonjour,
Et si…je souhaite rediriger toutes les url débutant par une même série de caractères? Par exemple http://www.monsite.fr/abcXXXX.html la constante étant abc, la variable étant xxxx. Est ce que écrire RedirectMatch 301 ^/abc.* http://www.site.test/rep2 fonctionnerait?
Merci d’avance!
Sylvain
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
Bonjour
je cherche à rediriger https://www.xxxx.fr/contact/contact.html en https://www.xxxx.fr/contact afin de supprimer le contact.html quand les gens arrivent sur mon formulaire de contact.
Est-ce possible ?
Bonjour
J’aimerais quae lorsque les gens arrivent sur ma page de contact; ils voient https://www.xyz.fr/contact/ au lieu de https://www.xyz.fr/contact/contact.html.
Est-ce possible ?
Cordialement