Nginx reescreve: remove? após filename.php

2

Aqui está 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 não consigo descobrir é que quando eu acesso uma página da web como "mydomain.com/filename.php" a URL será gravada em "mydomain.com/filename?". O que eu editaria para remover o final "?"?

    
por Miguel Renaud-Nolte 04.02.2016 / 22:04

1 resposta

1

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

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

Uma solução rápida seria usar $is_args em vez de ? .

Veja este documento para detalhes.

    
por 04.02.2016 / 23:19

Tags