.htaccess : mettre en place une redirection sans changer l'URL

Avec le fichier .htaccess, il est possible d'effectuer une redirection sans modifier la barre d'adresse du navigateur. L'internaute ne s'aperçoit alors pas du changement. Voici comment.

Le fichier ".htaccess" peut être utilisé pour gérer les redirections dans son site internet. Ce système est très utile pour créer des URL optimisées pour le référencement et rediriger ensuite vers ces bonnes URL. Il est même possible d'effectuer cette redirection sans modifier la barre d'adresse du navigateur. L'internaute ne s'aperçoit alors pas du changement.

Pour mettre en place une redirection avec le fichier ".htaccess", assurez-vous que le module "mod_rewrite" d'Apache est activé. Dans le fichier, indiquez l'utilisation de la réécriture d'URL avec la directive "RewriteEngine On".
Écrivez ensuite les règles de réécriture avec la directive "RewriteRule"(lire ici comment elle fonctionne). Pour effectuer une redirection sans changer d'URL dans le navigateur, il y a deux règles à respecter :
- ne pas mettre d'URL avec "http://" : cela entraînera une redirection en changeant l'URL. Utiliser des chemins relatifs en partant du répertoire où est situé le fichier ".htaccess" ;
- ne pas utiliser le drapeau "[R]" dans ses redirections ; l'usage de ce drapeau entraîne une nouvelle requête du navigateur, et donc un changement dans la barre d'adresse.

Voici ci-dessous un exemple de redirection qui ne changera pas l'URL inscrite dans le navigateur :
RewriteEngine On
RewriteRule ^index.html$ /index.php?page=accueil [L]
L'internaute verra toujours sur son navigateur l'adresse "http://www.monsite.fr/index.html", alors que le site internet affichera la page "http://www.monsite.fr/index.php?page=accueil".

Si vous souhaitez modifier l'URL dans le navigateur, il suffit de ne pas respecter l'une ou l'autre des conditions citées plus haut :
#Ces deux redirections vont changer l'URL écrite dans la barre d'adresse du navigateur.
RewriteRule ^index.html$ http://www.monsite.fr/index.php?page=accueil [L]
RewriteRule ^index.html$ /index.php?page=accueil [L, R]

Sur .htaccess, lire aussi ces fiches pratiques

e- Comment indiquer un en-tête "Vary: Accept-Encoding" dans .htaccess ?

Tutoriels SEO