13 exemples concrets à copier-coller & adapter. Comment faire et tester des redirections 301 permanentes depuis le .htaccess ?
13 exemples concrets à copier-coller & adapter. Comment faire et tester des redirections 301 permanentes depuis le .htaccess ?
Accès rapide (Sommaire) :
#301 Redirects for .htaccess #Redirect a single page: Redirect 301 /pagename.php http://www.domain.com/pagename.html #Redirect an entire site: Redirect 301 / http://www.domain.com/ #Redirect an entire site to a sub folder Redirect 301 / http://www.domain.com/subfolder/ #Redirect a sub folder to another site Redirect 301 /subfolder http://www.domain.com/ #This will redirect any file with the .html extension to use the same filename but use the .php extension instead. RedirectMatch 301 (.*)\.html$ http://www.domain.com$1.php ## #You can also perform 301 redirects using rewriting via .htaccess. ## #Redirect from old domain to new domain RewriteEngine on RewriteBase / RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L] #Redirect to www location RewriteEngine on RewriteBase / rewritecond %{http_host} ^domain.com [nc] rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc] #Redirect to www location with subdirectory RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} domain.com [NC] RewriteRule ^(.*)$ http://www.domain.com/directory/index.html [R=301,NC] #Redirect from old domain to new domain with full path and query string: Options +FollowSymLinks RewriteEngine On RewriteRule ^(.*) http://www.newdomain.com%{REQUEST_URI} [R=302,NC] #Redirect from old domain with subdirectory to new domain w/o subdirectory including full path and query string: Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_URI} ^/subdirname/(.*)$ RewriteRule ^(.*) http://www.katcode.com/%1 [R=302,NC] Rewrite and redirect URLs with query parameters (files placed in root directory) Original URL: http://www.example.com/index.php?id=1 Desired destination URL: http://www.example.com/path-to-new-location/ .htaccess syntax: RewriteEngine on RewriteCond %{QUERY_STRING} id=1 RewriteRule ^index\.php$ /path-to-new-location/? [L,R=301] Redirect URLs with query parameters (files placed in subdirectory) Original URL: http://www.example.com/sub-dir/index.php?id=1 Desired destination URL: http://www.example.com/path-to-new-location/ .htaccess syntax: RewriteEngine on RewriteCond %{QUERY_STRING} id=1 RewriteRule ^sub-dir/index\.php$ /path-to-new-location/? [L,R=301] Redirect one clean URL to a new clean URL Original URL: http://www.example.com/old-page/ Desired destination URL: http://www.example.com/new-page/ .htaccess syntax: RewriteEngine On RewriteRule ^old-page/?$ $1/new-page$2 [R=301,L] Rewrite and redirect URLs with query parameter to directory based structure, retaining query string in URL root level Original URL: http://www.example.com/index.php?id=100 Desired destination URL: http://www.example.com/100/ .htaccess syntax: RewriteEngine On RewriteRule ^([^/d]+)/?$ index.php?id=$1 [QSA] Rewrite URLs with query parameter to directory based structure, retaining query string parameter in URL subdirectory Original URL: http://www.example.com/index.php?category=fish Desired destination URL: http://www.example.com/category/fish/ .htaccess syntax: RewriteEngine On RewriteRule ^/?category/([^/d]+)/?$ index.php?category=$1 [L,QSA] Domain change – redirect all incoming request from old to new domain (retain path) RewriteEngine on RewriteCond %{HTTP_HOST} ^example-old\.com$ [NC] RewriteRule ^(.*)$ http://www.example-new.com/$1 [R=301,L] If you do not want to pass the path in the request to the new domain, change the last row to: RewriteRule ^(.*)$ http://www.example-new.com/ [R=301,L] #From blog.oldsite.com -> www.somewhere.com/blog/ retains path and query, and eliminates xtra blog path if domain is blog.oldsite.com/blog/ Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_URI}/ blog RewriteRule ^(.*) http://www.somewhere.com/%{REQUEST_URI} [R=302,NC] RewriteRule ^(.*) http://www.somewhere.com/blog/%{REQUEST_URI} [R=302,NC]
Les redirections 301 (ou redirections permanentes), sont, à l’inverse 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, la popularité et les liens de l’ancienne page à la nouvelle vers laquelle la redirection 301 est faite.
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/
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 %{HTTPS} !=on RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Redirection 301 de HTTP vers HTTPS avec « www » ajouté en même temps :
RewriteEngine On RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] RewriteRule ^.*$ https://www.%1%{REQUEST_URI} [L,NE,R=301]
Avant de copier-coller ce code dans votre fichier .htaccess, veillez à bien conserver un backup de votre fichier.
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]
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/
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]
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://www.leptidigital.fr%{REQUEST_URI} [R=301,L]
Redirect 301 /exemple https://www.votredomaine.fr/test
Pour une redirection temporaire, vous pouvez utiliser le code 307 (temporary redirect) :
# Règles de redirection temporaires Redirect 307 /exemple https://www.votredomaine.fr/test
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]
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 :
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$ https://www.leptidigital.fr$1.php
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]
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]
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 : https://www.leptidigital.fr/index.php?categorie=seo
URL de destination une fois la règle active : https://www.leptidigital.fr/categorie/seo/
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 :
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/
Pour utiliser cet outil et tester vos règles de redirection avant qu’elles ne soient actives en production, il vous suffit de :
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 rangs 😉 … (joke ofc).
Non, une redirection 301 n’est pas spécifiquement utilisée pour rediriger un site vers un autre site. Une redirection 301 est un type de redirection d’URL utilisé pour rediriger une page ou un site vers une nouvelle URL permanente. Cela signifie que lorsque vous utilisez une redirection 301, vous indiquez aux moteurs de recherche et aux navigateurs Web que le contenu a été déplacé de manière permanente vers une nouvelle URL.
La redirection 301 est couramment utilisée dans les situations suivantes :
Oui, les moteurs de recherche prennent en compte les redirections permanentes 301. Lorsqu’un moteur de recherche rencontre une redirection 301, il comprend que le contenu de la page d’origine a été déplacé de manière permanente vers une nouvelle URL. Le moteur de recherche met à jour son index en remplaçant l’ancienne URL par la nouvelle URL.
Les moteurs de recherche considèrent les redirections permanentes 301 comme des indications importantes pour l’indexation des pages. Ils transfèrent également la plupart des signaux de référencement (tels que les backlinks et la réputation) de l’ancienne URL vers la nouvelle URL. Cela signifie que si une page était bien référencée avant la redirection, elle a de bonnes chances de maintenir son classement dans les résultats de recherche après la redirection.
Bon à savoir : les moteurs de recherche ont besoin de temps pour traiter et mettre à jour leurs index avec les nouvelles URL. Il peut donc y avoir une période de fluctuation dans les classements de recherche après la mise en place d’une redirection permanente 301.
Pour vérifier si une redirection permanente 301 est correctement mise en place, vous pouvez suivre ces étapes :
Rediriger le trafic d’un site vers son nouveau nom de domaine est une tâche cruciale pour maintenir la visibilité en ligne, préserver le référencement, et garantir une expérience utilisateur fluide. Voici un guide étape par étape pour accomplir cette mission de manière professionnelle:
Apache : Si votre serveur utilise Apache, ajoutez les lignes suivantes au fichier .htaccess
:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^anciendomaine\.com [OR]
RewriteCond %{HTTP_HOST} ^www\.anciendomaine\.com
RewriteRule ^(.*)$ http://www.nouveaudomaine.com/$1 [R=301,L]
Nginx : Si vous utilisez Nginx, ajoutez la configuration suivante dans le fichier nginx.conf
:
server {
listen 80;
server_name anciendomaine.com www.anciendomaine.com;
return 301 $scheme://www.nouveaudomaine.com$request_uri;
}
Effectivement, il existe plusieurs plugins WordPress qui permettent de gérer facilement les redirections permanentes 301, pour assurer que le trafic soit correctement redirigé vers les nouvelles URL, tout en préservant le référencement du site. Voici quelques-uns des plugins les plus populaires et les plus fiables :
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 !
Avant de se quitter…
Si cet article sur les redirections 301 via htaccess vous a plu, n’hésitez pas à le partager sur les réseaux sociaux et à vous abonner à notre newsletter digitale pour recevoir nos prochains articles.
Vous pouvez également suivre nos meilleurs articles via notre flux RSS : https://www.leptidigital.fr/tag/newsletter-digitale/feed/ (il vous suffit de l’insérer dans votre lecteur de flux RSS préféré (ex : Feedly)).
Nous sommes aussi actifs sur Linkedin, Twitter, Facebook et YouTube. On s’y retrouve ?
Pour toute question associée à cet article, n’hésitez pas à utiliser la section « commentaires » pour nous faire part de votre remarque, nous vous répondrons dans les meilleurs délais (avec plaisir).
Fondateur de LEPTIDIGITAL et consultant SEO senior (à mes heures perdues), je suis un grand passionné de marketing digital et de SEO. Avant d’être indépendant à 100 %, j’ai travaillé en tant qu’SEO manager et responsable e-commerce pour différentes sociétés (Altice Media, Infopro Digital, Voyage Privé, Groupe ERAM). (Sur le plan perso, je suis un grand curieux hyperactif aussi passionné par l’IA, la photographie et les voyages !). PS : Si vous souhaitez me contactez, privilégiez LinkedIn ou Instagram. Pour me contacter : [email protected]
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,
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
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.
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
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 ?
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
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
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 !
Bonjour,
Lorsque je tape sur mon navigateur :
https://monsite.fr
Je veux aller en permanence sur
https://monsite.fr/wp-admin
Merci de votre aide
Bonjour,
Si je peux me permettre, s’il s’agit d’un site internet destiné à recevoir des visiteurs, je ne vous recommande pas du tout la mise en place de cette redirection 301 via le S’il s’agit d’un site personnel ou que vous êtes le seul à y accéder, vous pouvez utiliser la première règle de redirection partagée dans cet article et l’adapter au niveau de l’URL, elle fonctionnera parfaitement.
Bonne journée
Bonjour, j’ai des pages de mon ancien site que je veux mettre sur mon nouveau site.
Est ce que je duplique les pages de l’ancien vers le nouveau en supprimant les pages de l’ancien après ?
Je fais ensuite des 301 mais je ne sais pas trop comment et surtout les 301 de l’ancien vers le nouveau ou le nouveau vers l’ancien ?
Merci
Bonjour Nicolas,
La méthodologie exacte va différer d’un site à un autre mais ce qu’il faut retenir c’est qu’il faut en effet migrer les pages de votre ancien site à votre nouveau puis faire un plan de redirections 301 que vous allez soit traiter via des règles de redirections 301 dynamiques (qui gèrent de nombreuses pages d’un coup), soit manuelles (page par page), soit les deux. Tout cela, géré via le fichier .htaccess.
A dispo si besoin,
Vincent