Cómo convertir reglas de reescritura .htaccess a Nginx

El conversor lee las reglas de reescritura de un archivo .htaccess y escribe las líneas Nginx equivalentes: RewriteRule pasa a rewrite y RewriteCond a los bloques if que lo protegen. Todo ocurre en la página y las reglas no se suben a ningún servidor.

Solo se traducen las reglas de reescritura. El resto —RewriteBase, Redirect, Header, Options y otras directivas de Apache— aparece en un comentario al final del resultado en lugar de copiarse, para que veas qué queda por decidir.

  1. Pega las reglas de reescritura de tu archivo .htaccess en el cuadro.
  2. Pulsa “Convertidor de reglas .htaccess a Nginx” para generar el resultado.
  3. Lee el comentario del final: enumera las directivas y los flags que no se convirtieron.
  4. Pega la salida en el bloque server y ejecuta nginx -t antes de recargar.
  5. Pulsa Limpiar para vaciar el formulario antes de la siguiente conversión.

Qué se traduce, qué se informa y cómo verificar el resultado

Qué traduce el conversor

Las líneas RewriteRule se convierten en sentencias rewrite con el mismo patrón: [L] pasa a last, [R=301] a permanent, [R=302] y [R] a redirect, y [NC] se escribe como (?i) en línea para que la coincidencia siga siendo insensible a mayúsculas. [E=NAME:value] se convierte en set $NAME value;, la forma que acepta nginx.

Las líneas RewriteCond se convierten en bloques if que asignan una variable $rule_N, y la regla protegida se ejecuta dentro de if ($rule_N = "..."). Las comprobaciones de archivo también se traducen: -f pasa a !-f al negarse, -d se mantiene y -s pasa a -e.

Qué se informa en lugar de convertirse

Las directivas de Apache sin equivalente en Nginx no se descartan en silencio: el resultado termina con un comentario que las enumera, junto con flags como S= o T= que no tienen contrapartida en Nginx.

Las reglas con [F], [G] o [P] tampoco se convierten, porque un 403 sin condición o una reescritura con proxy se comportarían de otra forma en nginx: la herramienta imprime la regla y la construcción que debes añadir a mano. Una condición que no puede leer se marca como #ignored y la regla que protegía queda inactiva hasta que la reescribas.

Límites y verificación

La entrada está limitada a 6.000 caracteres, así que divide los archivos .htaccess grandes. El resultado es un punto de partida, no una configuración terminada: las comillas, los bloques location y el contexto del servidor dependen de tu instalación.

Coloca el bloque generado en un server, ejecuta nginx -t y prueba una redirección en el navegador antes de cambiar nada. La conversión se ejecuta localmente en JavaScript: las reglas no salen de la página y la herramienta sigue funcionando sin conexión.

Herramientas recientes: