¿Cómo "convertir" reglas de htaccess en reglas de nginx?

¿Cómo "convertir" reglas de htaccess en reglas de nginx?

Me gustaría "convertir" estas reglas en una regla nginx. Creo que el bloque de ubicación es el lugar correcto, pero mis soluciones no funcionan.

Options -Indexes
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -f
RewriteRule ^(.*)$ public/$1 [QSA,END]
RewriteCond %{REQUEST_FILENAME} !index\.php
RewriteRule ^(.+)$ index.php?route=$1 [QSA,L]

Probé esto

location / {
  rewrite ^(.*)$ /public/$1;
  rewrite ^(.+)$ /index.php?route=$1 break;
}

Respuesta1

La rewritedirectiva nginx se aplica incondicionalmente, mientras que usted tiene muchas condiciones en sus reglas de reescritura. Utilizar eldirectiva try_filesen cambio:

location = /index.php {
    # PHP options
}

location / {
    try_files /public$uri /public$uri/ /index.php?route=$uri;
}

información relacionada