Estou tentando converter uma reescrita muito simples de uma versão anterior do nginx para a atual, como abaixo:
location / {
if ( !-f $request_filename ) {
rewrite ^/([a-z]*)$ /index.php?action=$1;
rewrite ^/([a-z]*)/(.*)$ /index.php?action=$1&item=$2;
}
}
Foi assim que cheguei. A página de índice aparece, mas qualquer página que deve ser reescrita como acima, em vez disso, lança 404:
server {
listen 80 default;
root /var/www;
index index.php;
server_name _;
location / {
try_files $uri $uri/ /index.php?action=$uri&item=$args;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
}
O que eu estou fazendo errado aqui?
O que está acontecendo exatamente? Parte do problema é $ uri e $ args não são codificados corretamente.
—
Lucas
404 é jogado com
—
Industrial
File not found.
se eu usar URI /page
ou/page/id
O que acontece quando você faz exatamente
—
Lucas
try_files $uri $uri/ /index.php
?
O Index.php funciona bem, mas qualquer coisa que deva ser reescrita acaba nos 404's
—
Industrial
Tente
—
Lucas
try_files $uri $uri/ /index.php?$args
. Você deve conseguir o URL com $_SERVER['REQUEST_URI']
. $ _GET deve funcionar normalmente.