Estou com problemas para converter algumas regras .htaccess em um servidor nginx.
RewriteRule ^$ index.php [L]
RewriteRule ^([A-Za-z0-9-]+)?$ index.php?section=$1 [L]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ index.php?section=$1&go=$2 [L]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ index.php?section=$1&go=$2&action=$3 [L]
Alguém poderia ajudar a converter e explicar como essas expressões regulares seriam convertidas para o nginx?
Não tenho certeza da sintaxe, de acordo com a documentação do nginx. Tentei o seguinte:
server {
rewrite ^([A-Za-z0-9-]+)?$ index.php?section=$1&go=$2;
}
Eu também tentei dentro de um bloco de localização raiz, como mostrado abaixo. Não sei como o try_files
afeta isso.
location / {
rewrite ^$ /index.php break;
rewrite ^([A-Za-z0-9-]+)?$ /index.php?section=$1 break;
rewrite ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ /index.php?section=$1&go=$2 break;
rewrite ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ /index.php?section=$1&go=$2&action=$3 break;
rewrite ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ /index.php?section=$1&go=$2&action=$3&id=$4 break;
try_files $uri $uri/ /index.php?$args;
}
Isso não parece funcionar. Isso precisa ser colocado dentro de um bloco de localização primeiro?
As URLs que estou testando são as seguintes. O nome do host foi removido porque não tenho permissão para compartilhá-lo.
http://www.example.com/entry
http://www.example.com/volunteers
http://www.example.com/contact
Basicamente, a página está sendo carregada como se index.php estivesse sendo acessado e as seções não estivessem sendo carregadas se isso fizesse sentido. Nada parece ser passado para o script index.php.