nginx try_files 位置配置?

nginx try_files 位置配置?

我正在用 Slim 3 Framework 编写目录列表脚本。我遇到一个问题,由于配置中的“try_files”指令,Slim 3 无法获取文件下载请求(即使文件存在)。一旦我更改“try_files”的顺序,它就无法处理任何 .php 文件。

这是当前的配置块:

location / {
        try_files $uri /index.php$is_args$args;
    }

这是尝试过的配置(但失败了 - 它会提供一个包含我的 index.php 内容的 .bin 文件而不是处理它):

location / {
        try_files /index.php$is_args$args $uri;
    }

最终,我希望我的 Slim 3 脚本能够捕获请求并对其进行处理,而不是简单地由 Web 服务器提供它。

以下是整个 vhost 配置:

server {
    listen 80;
    server_name debian9;
    index index.php;
    error_log /home/patrick/html/indexmeta.error.log;
    access_log /home/patrick/html/indexmeta.access.log;
    root /home/patrick/html/indexmeta/public;

    location ~ \.php {
        try_files $uri =404;
        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_index index.php;
        fastcgi_pass 127.0.0.1:9000;
    }

    location / {
        try_files /index.php$is_args$args $uri;
    }

}

server {
   listen 8800;
   root /home/patrick/html/phpmyadmin;

   location / {
       index index.php index.html index.htm;   
   }

   location ~ \.php$ {
      include fastcgi_params;
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   }

}

答案1

如果我将所有文件作为参数重写到index.php页面,我就会得到我想要的输出。以下是nginx配置代码:

location / {
    rewrite ^(.*)$ /index.php?$1 last;
}

相关内容