这是我目前的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而不是? 。
详情请参阅此文件 。