尝试删除扩展时,Nginx正在下载PHP文件

时间:2018-05-06 20:08:33

标签: php nginx web server

所以,基本上我的当前配置如下所示。每当我尝试在没有PHP扩展名的情况下请求URL时,它会下载它吗?

server {

      listen [::]:80;

      root myDirectory;

      index index.php index.html;

      server_name myDomain;

      location / {
        try_files $uri $uri/ $uri.php $uri.php$is_args$query_string =404;

      }

      location ~\.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        fastcgi_pass unix:/run/php/php7.1-fpm.sock;
      }

      location ~ /\ ht {
        deny all;
      }

    }

我已经完成了其他问题中许多其他答案的建议,比如编辑php7.1-fpm php.ini文件:

cgi.fix_pathinfo=0

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您目前使用的try_files无效。 try_files语句的文件元素在同一location块中处理,这是PHP文件的错误位置。有关详情,请参阅this document

有许多解决方案,但如果发现脚本文件存在,则可以使用命名位置执行内部重写

例如:

location / {
    try_files $uri $uri/ @rewrite;
}
location @rewrite {
    if (-f $document_root$uri.php) { rewrite ^ $uri.php last; }
    return 404;
}
location ~ \.php$ {
    try_files $uri =404;

    include snippets/fastcgi-php.conf;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_pass unix:/run/php/php7.1-fpm.sock;
}

有关if。

的使用,请参阅this caution