Try_files没有命中PHP(NginX配置)

时间:2012-08-23 12:15:51

标签: php nginx

下面是我的nginx.conf。

如果不存在文件/index.php,则可以正常使用。

但是当我的URL /foo/bar => /foo/bar/index.php通过下载提供为PHP源代码时。

有什么想法吗?

try_files $uri $uri/ $uri/index.php /index.php;

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

3 个答案:

答案 0 :(得分:4)

解决方案是添加 index index.php

    index index.php

    try_files $uri $uri/ $uri/index.php /index.php;

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

答案 1 :(得分:1)

我的配置

index index.html index.htm index.php;
location ~ \.php$ {
        fastcgi_pass unix:/tmp/php-fpm.sock;
        include fastcgi_params;
      }

重新加载nginx和fastcgi

答案 2 :(得分:0)

我也有同样的问题。当我在PHP上下文(location ~ ^(.+\.php)(.*)$ { ...)中有以下内容时:

try_files $fastcgi_script_name =404;

..它总是返回404.最后我读了try_files docs,其中说:

  

文件的路径是根据root和alias指令从file参数构造的。

我只为每个位置块定义了alias(当然在PHP-FPM块中没有定义),但是在任何地方都没有设置整体root,所以NGiNX没有知道在哪里寻找文件。一旦我为服务器块设置了root,它就开始工作了。