Nginx重写:删除? 在filename.php之后

这是我目前的nginx站点configuration:

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; } } 

所以,我似乎无法弄清楚的问题是,当我访问像“mydomain.com/filename.php”的网页时,URL将被写入“mydomain.com/filename?”。 我会编辑什么来删除结尾“?”?

下面的行添加一个? 到以.php结尾的任何外部呈现的URI的末尾:

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

快速修复将是使用$is_args而不是?

详情请参阅此文件 。