Comment convertir des règles de réécriture .htaccess en Nginx

Le convertisseur lit les règles de réécriture d’un fichier .htaccess et écrit les lignes Nginx correspondantes : RewriteRule devient rewrite et RewriteCond les blocs if qui l’encadrent. Tout se passe dans la page, les règles ne sont jamais envoyées.

Seules les règles de réécriture sont traduites. Le reste — RewriteBase, Redirect, Header, Options et autres directives Apache — figure dans un commentaire à la fin du résultat au lieu d’être recopié, pour que vous voyiez ce qui reste à décider.

  1. Collez les règles de réécriture de votre fichier .htaccess dans le champ.
  2. Cliquez sur « .htaccess à Nginx » pour générer le résultat.
  3. Lisez le commentaire à la fin : il liste les directives et les options qui n’ont pas été converties.
  4. Placez la sortie dans un bloc server et lancez nginx -t avant de recharger.
  5. Cliquez sur Effacer pour vider le formulaire avant l’essai suivant.

Ce qui est traduit, ce qui est signalé et comment vérifier le résultat

Ce que le convertisseur traduit

Les lignes RewriteRule deviennent des instructions rewrite avec le même motif : [L] devient last, [R=301] permanent, [R=302] et [R] redirect, et [NC] s’écrit (?i) dans le motif pour conserver une comparaison insensible à la casse. [E=NAME:value] devient set $NAME value;, la forme acceptée par nginx.

Les lignes RewriteCond deviennent des blocs if qui affectent une variable $rule_N, et la règle protégée s’exécute dans if ($rule_N = "..."). Les tests de fichiers suivent : -f devient !-f s’il est nié, -d reste -d et -s devient -e.

Ce qui est signalé au lieu d’être converti

Les directives Apache sans équivalent Nginx ne sont pas supprimées en silence : le résultat se termine par un commentaire qui les énumère, avec les options comme S= ou T= qui n’ont pas de correspondance dans Nginx.

Les règles [F], [G] et [P] ne sont pas converties non plus : un 403 sans condition ou une réécriture avec proxy se comporterait autrement dans nginx. L’outil affiche la règle et la construction à ajouter à la main. Une condition qu’il ne peut pas lire est marquée #ignored, et la règle qu’elle protégeait reste inactive jusqu’à ce que vous la réécriviez.

Limites et vérification

L’entrée est limitée à 6 000 caractères : découpez les gros fichiers .htaccess. Le résultat est un point de départ, pas une configuration terminée : les guillemets, les blocs location et le contexte serveur dépendent de votre installation.

Placez le bloc généré dans un server, lancez nginx -t et testez une redirection dans le navigateur avant de basculer. La conversion s’exécute localement en JavaScript : les règles ne quittent pas la page et l’outil fonctionne hors ligne.

Outils récents :