nginx:重写后正在下载PHP文件

时间:2014-04-02 16:44:17

标签: php nginx location rewrite pydio

我在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/*中的网址添加.php扩展名。 此规则在地址栏中查找没有.php的文件,但现在下载而不是执行。

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

我还能尝试什么? 谢谢!

1 个答案:

答案 0 :(得分:1)

首先,您误解了try_files指令。没有“最后”的论点,它不像你想象的那样有效。请查看文档:{​​{3}}。这是技术文档,按字面意思读,每个单词都有意义。

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

try_files $uri $uri.php =404 last;

应替换为:

try_files $uri $uri.php;