0

我在 ISPConfig3 服务器上使用 nginx 和 PHP-FPM。

我将以下重写规则放在我的 nginx 指令中(在 Pydio 中制作更漂亮的链接):

location ~ \.php$ {
        try_files @php;
    }

location @php {
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass 127.0.0.1:9026;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors on;
    }

proxy_set_header X-Accel-Mapping /var/www/XXXYYY.com/pydio/data/=/data/;

location /conf/       { deny all; }
location /data/       { internal; }

location /data/public/ {
    try_files $uri $uri.php =404 last;
}

我希望 pydio.XXXYYY.com/data/public/* 中的 URL 添加 .php 扩展名。此规则在地址栏中查找没有 .php 的文件,但现在它们被下载而不是执行。

由于我使用 ISPConfig3,.php 文件的重写(让它们由 PHP-FPM 执行)高于所述部分。但我认为添加“最后一个”应该解决这个问题。

我还能尝试什么?谢谢!

4

1 回答 1

1

首先,您误解了 try_files 指令。没有“最后一个”论点,它不像你想象的那样起作用。请检查文档: http: //nginx.org/r/try_files。它是技术文档,按字面意思阅读,每个单词都有意义。

要解决您的问题,您必须从中删除最后两个参数try_files

try_files $uri $uri.php =404 last;

应替换为:

try_files $uri $uri.php;
于 2014-04-09T08:16:20.557 回答