Como “converter” regras htaccess em regras nginx?

Como “converter” regras htaccess em regras nginx?

Gostaria de "converter" essas regras em uma regra nginx. Acho que o bloco de localização é o lugar certo, mas minhas soluções não funcionam.

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]

Eu tentei isso

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

Responder1

A diretiva nginx rewriteé aplicada incondicionalmente, embora você tenha muitas condições em suas regras de reescrita. Use odiretiva try_filesem vez de:

location = /index.php {
    # PHP options
}

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

informação relacionada