Reescrita do Nginx: remover? após filename.php

2

Aqui está a minha configuração atual do site nginx:

server {
server_name DOMAIN;
access_log /srv/www/DOMAIN/logs/access.log;
error_log /srv/www/DOMAIN/logs/error.log;
root /srv/www/DOMAIN/public_html;

location / {
    if ($request_uri ~ ^/(.*)\.html$) {  return 302 /$1;  }
    try_files $uri $uri.html $uri/ @extensionless-php;
    index index.html index.htm index.php;
}

location ~ \.php$ {
    include /etc/nginx/fastcgi_params;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    if ($request_uri ~ ^/([^?]*)\.php($|\?)) {  return 302 /$1?$args;  }
    try_files $uri =404;
}

location @extensionless-php {
    rewrite ^(.*)$ $1.php last;
}

}

Portanto, o problema que eu não consigo entender é que, quando eu acessar uma página da web como "meudominio.com.br/nome_do_arquivo.php", o URL será gravado em "meudominio.com.br/ nome do arquivo?". O que eu editaria para remover o final "?"?

Miguel Renaud-Nolte
fonte

Respostas:

1

A linha a seguir adiciona ?a ao final de qualquer URI apresentado externamente, terminando com .php:

if ($request_uri ~ ^/([^?]*)\.php($|\?)) {  return 302 /$1?$args;  }`.

Uma solução rápida seria usar em $is_argsvez do ?.

Veja este documento para detalhes.

Richard Smith
fonte