L’URL rewriting modifie la manière dont un serveur interprète une URL. Une réécriture peut être interne : le navigateur conserve l’adresse demandée pendant que le serveur traite une autre route. Une redirection HTTP demande, elle, au navigateur de changer d’adresse.
Deux comportements différents
Exemple pédagogique :
Réécriture interne
/produit/42/ → traitement par /index.php?id=42
Le navigateur reste sur /produit/42/.
Redirection
/ancien-produit/ → réponse 301 vers /produit/42/
Le navigateur demande ensuite /produit/42/.
Une URL plus lisible n’implique donc pas automatiquement qu’une migration a été correctement redirigée. Sur Apache, mod_rewrite peut servir aux deux usages selon les règles. Documentation Apache.
Le test qui tranche
Inspectez la réponse HTTP avec les outils réseau du navigateur ou curl. Un statut de redirection et un en-tête Location indiquent un changement demandé au client. Une réponse 200 avec le contenu attendu peut correspondre à un routage interne.
Testez également les paramètres : certains doivent être conservés, d’autres peuvent produire des doublons. N’inventez pas une règle globale de suppression de paramètres sans connaître leur rôle.
Les erreurs SEO à éviter
Si l’ancienne URL technique et la nouvelle restent toutes deux accessibles avec le même contenu, clarifiez la référence canonique et les liens internes. Si l’ancienne URL doit disparaître, contrôlez sa redirection directe et la destination finale.
La recette doit inclure une URL valide, une ancienne adresse et un chemin inexistant. Une règle trop large peut transformer toutes les erreurs en page d’accueil 200. Elle donne alors l’impression que le site fonctionne tout en masquant les vrais statuts utiles à l’indexation.