location ~* \.php$
corresponderá a qualquer *.php
e fará com que try_files
retorne, independentemente de sua existência (daí o 404). Considere o uso de reescreva !
Eu tenho isso configurado em uma configuração do site nginx, que está funcionando perfeitamente para redirecionar todas as solicitações de .html
para /index.php
. No entanto, ele não reescreve test.php
para /index.php
e, em vez disso, gera um erro 404.
Alguém pode lançar alguma luz, por favor? Aqui está a minha configuração do site:
server {
listen 80 default_server;
location / {
root /srv/www/htdocs;
index index.php;
try_files $uri $uri/ /index.php;
location ~* \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param HTTPS on; # <-- add this line
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
}
}
}
Qualquer ajuda apreciada - estou arrancando meu cabelo!
location ~* \.php$
corresponderá a qualquer *.php
e fará com que try_files
retorne, independentemente de sua existência (daí o 404). Considere o uso de reescreva !
Quando uma diretiva try_files é colocada diretamente em um servidor, ela só é avaliada se nenhuma localização corresponder, portanto, ela não entrará em vigor se uma solicitação já terminar com .php. A maneira de corrigir isso é adicionar um try_files $uri /index.php =404;
dentro do local do php.