Utilia

Générateur de redirections .htaccess

Créez des redirections 301 et 302 pour .htaccess ou Nginx, forcez le HTTPS et le www, déménagez un domaine et repérez boucles et chaînes.

Serveur
Type de redirection
Adresse canonique
Barre oblique finale
Déménager tout le domaine

Sauvegardez d'abord votre configuration actuelle, et testez en 302 avant de passer en 301 : les navigateurs mémorisent les redirections permanentes.

Vérifications

Comment utiliser le générateur de redirections .htaccess

  1. Choisissez le Serveur : Apache (.htaccess) ou Nginx, puis le Type de redirection : 301 – permanente ou 302 – temporaire.
  2. Dans Redirections de pages, écrivez une redirection par ligne : l’ancien chemin, une espace, puis la nouvelle URL, par exemple /ancienne-page.html /nouvelle-page/. Une tabulation, une virgule ou -> conviennent aussi, et vous pouvez coller des URL complètes ou des lignes Redirect 301 /a /b existantes.
  3. Au besoin, indiquez Votre domaine (par exemple example.com) pour que les redirections de pages mènent directement à l’adresse finale.
  4. Dans Adresse canonique, cochez Forcer le HTTPS et choisissez Forcer le www, Supprimer le www ou Ne pas toucher au www. Dans Barre oblique finale, décidez de l’ajouter ou de la supprimer.
  5. Si tout le site change d’adresse, remplissez Déménager tout le domaine avec l’Ancien domaine et la Nouvelle adresse, et laissez Conserver le chemin coché pour que chaque page arrive sur son équivalent.
  6. Lisez les Vérifications, puis cliquez sur Copier ou Télécharger. Le bouton Charger un exemple montre une configuration complète.

Comment fonctionnent les règles générées ?

Pour Apache, l’outil écrit des règles mod_rewrite précédées d’un seul RewriteEngine On. Chaque page devient une RewriteRule dont le motif commence par ^/? : elle fonctionne aussi bien dans un fichier .htaccess (où la barre oblique initiale est retirée) que dans un bloc <VirtualHost>. Les points, parenthèses, signes plus et autres caractères spéciaux des expressions régulières sont échappés, et une espace devient \x20. Dans la nouvelle URL, $ et % sont échappés, car Apache les prendrait pour des références arrière, et le drapeau NE évite un double encodage.

Une RewriteRule ne voit jamais la chaîne de requête. Quand l’ancienne adresse en contient une, comme /produit.php?id=42, l’outil ajoute une ligne RewriteCond %{QUERY_STRING} ^id=42$ et le drapeau QSD : les anciens paramètres sont abandonnés au lieu d’être recopiés sur la nouvelle page.

L’ordre des règles limite les sauts inutiles : déménagement du domaine, redirections de pages, barre oblique, puis HTTPS et www. Le HTTPS et le www sont traités par une seule règle, si bien que http://www.example.com arrive sur https://example.com en une seule redirection. Quand votre domaine est connu, les redirections de pages visent déjà l’adresse HTTPS finale.

Pour Nginx, le HTTPS, le www et le déménagement deviennent des blocs server distincts avec return 301, et les redirections de pages des lignes rewrite à coller dans votre bloc server principal. Elles s’exécutent avant la sélection des location et passent donc avant la règle de barre oblique. Un ? final empêche Nginx d’ajouter l’ancienne chaîne de requête lorsqu’il ne le faut pas.

Les vérifications effectuées

  • Une page redirigée vers elle-même, ou deux pages qui se renvoient l’une à l’autre : une boucle qui finit en « trop de redirections ».
  • Les chaînes du type A → B → C : redirigez A directement vers C, car chaque saut ralentit le visiteur et gaspille le budget d’exploration.
  • Une même ancienne adresse listée deux fois : seule la première règle s’appliquerait.
  • Une cible qui n’est ni une URL absolue ni un chemin commençant par /, ou une cible en http:// ou avec le mauvais www sur votre propre domaine.
  • Un réglage de barre oblique qui redirigerait encore une cible, voire la renverrait vers sa source.

Questions fréquentes

Faut-il choisir une redirection 301 ou 302 ?

La 301 convient à un changement définitif : les moteurs de recherche transfèrent les signaux de l’ancienne page vers la nouvelle et mettent leur index à jour. La 302 sert aux changements temporaires, comme une maintenance ou une opération ponctuelle. Les navigateurs mémorisent les 301 : testez d’abord en 302.

Où placer le fichier .htaccess ?

À la racine du site (souvent public_html ou www), à côté de index.php ou index.html. Le fichier téléchargé s’appelle htaccess.txt : renommez-le en .htaccess, ou collez les règles en haut de votre fichier existant. Gardez une copie de l’original.

Pourquoi RewriteRule plutôt que Redirect 301 ?

Les lignes Redirect relèvent de mod_alias et s’exécutent à une autre étape que RewriteRule. Mélanger les deux dans un même fichier rend l’ordre d’application difficile à prévoir. N’utiliser que mod_rewrite garde toutes les règles dans une séquence claire et permet de tenir compte de la chaîne de requête.

Mon site affiche « trop de redirections » après le passage en HTTPS. Pourquoi ?

Derrière un répartiteur de charge, un CDN ou un proxy qui gère le HTTPS, Apache reçoit toutes les requêtes en HTTP simple : %{HTTPS} reste donc toujours à off. Testez plutôt l’en-tête transmis, par exemple RewriteCond %{HTTP:X-Forwarded-Proto} !https, ou activez la redirection dans le CDN.

Cet outil modifie-t-il mon serveur ?

Non. Il se contente de produire du texte dans votre navigateur. Rien n’est envoyé ailleurs, et vous restez maître de l’endroit et de la façon d’installer les règles.