Estamos mudando nosso site do Apache para o Nginx. Até agora, as regras que convertemos de regras .htaccess para nginx estão funcionando bem, mas essa regra em particular está me dificultando.
Eu tentei conversores online que usam if (que eu não uso) e tentei converter manualmente as regras, mas nada está funcionando. Se alguém puder me orientar na direção certa ou apontar onde estou errando, será de grande ajuda.
Regras do Apache .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]+)/([a-z]+).html$ /products/code_asset_2019.php?page=$1&filename=$2 [L]
RewriteRule ^(.*)/(.*\.php)$ /products/code.php?page=$1
RewriteRule ^(.*).html$ /products/code.php?page=$1
</IfModule>
Estrutura de diretórios:
root /var/www/html
;
lado de dentro
/html
, temos uma /products
pasta que contém code_asset_2019.php e code.php
Minhas regras convertidas que não estão funcionando:
location /products {
try_files $uri $uri/ @rules;
}
location @rules {
rewrite ^/([a-z]+)/([a-z]+)\.html$ /products/code_asset_2019.php?page=$1&filename=$2 last;
rewrite ^/(.)/(.\.php)$ /products/code.php?page=$1;
rewrite ^/(.*)\.html$ /products/code.php?page=$1;
return 404;
}
Por que não colocar isso em vez de tudo que você tem: