Redirections .htaccess

Il existe différentes manières de faire des redirections via le fichier .htaccess.

Vous trouverez ci-dessous, certains cas de figures complexes.

Pour le SEO, il est préférable de régler vos problèmes de redirections autrement.
Soit directement dans votre sitemap et sur votre console (google search …), soit directement dans les fichiers de votre site ou votre CMS.

Redirection basique

RewriteEngine On 
RewriteRule .* page.extension

.* = toutes les pages vers une autre page

RewriteRule dossier /sous-dossier/page.extension 

Ici on redirige toutes les requêtes /dossier vers /sous-dossier/page

Redirection répertoire

Ici on va chercher à rediriger le répertoire /faq/1 et toutes les urls à l’intérieur :

/faq/1/ vers https://url/dossier1
/faq/1/page-de-test.php vers https://url/dossier1
/faq/1/sous-rep1/ vers https://url/dossier1
/faq/1/sous-rep1/page-de-test2.php vers https://url/dossier1

RedirectMatch 301 ^/faq/1/.* https://url/dossier1

^/faq/1 : Le “^” Permet de spécifier que seront prises en compte toutes les URL dont la partie hors domaine (www.url.test) commence par “/faq/1”

faq/1/.* : Permet de spécifier “tout”. Cela permet d’englober tout ce qui peut se trouve dans le répertoire visé.
Explication :
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.

Redirections d’un dossier sans rediriger les pages contenues dans celui-ci :

RedirectMatch 301 /dossier/sous-dossier/?$ https://www.url.fr/dossier

Ici, on ne met pas de ^ avant l’url à rediriger et un / + ? + $ à la fin.

Exemple :
suppression du répertoire virtuel /rep-virtuel/
/nos-solutions/maison-individuelle/tuber/rep-virtuel vers /nos-solutions/maison-individuelle/tuber
en gardant le répertoire dans les url produits :
/nos-solutions/maison-individuelle/tuber/rep-virtuel/produit.page

RedirectMatch 301 /nos-solutions/maison-individuelle/tuber/rep-virtuel/?$ https://www.url.fr/nos-solutions/maison-individuelle/tuber

Redirections caractères spéciaux

Exemple :
http://www.url.fr/inhoud/321/38/1/Actualit%C3%A9s/Producten+en+diensten/combiflue-4-in-1-schoorsteen-voor-de-individuele-woning.html
Le problème ici sont les %C3%A9 (code html du é) et les +

Plusieurs méthodes (préférez la 1ère méthode):

RedirectMatch 301 ^/inhoud/321/38/1/A.*/P.*/combiflue-4-in-1-schoorsteen-voor-de-individuele-woning.html https://nouvelle_url
RedirectMatch 301 'http://www.url.fr/inhoud/321/38/1/Actualit%C3%A9s/Producten+en+diensten/combiflue-4-in-1-schoorsteen-voor-de-individuele-woning.html' https://nouvelle_url

Dans la première solution, on utilise la règle des . et des *, vu au début de l’article.

Dans la seconde solution, on entoure l’url à rediriger par des ‘ ‘.
Cette solution marche également pour les urls de destinations.

Redirect, Redirect Match, RedirectPermanent

Il est à noté qu’il existe différente manière selon le besoin de faire une redirection sur Apache.

Redirect : Envoie une redirection externe demandant au client d’effectuer une autre requête avec une URL différente

RedirectMatch : Envoie une redirection externe faisant appel aux expressions rationnelles pour la mise en correspondance de l’URL courante

RedirectPermanent : Envoie une redirection externe permanente demandant au client d’effectuer une nouvelle requête avec une URL différente.

Pour aller plus loin, référez-vous à la documentation d’Apache.