我正在用 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;
}