下面是我的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;
}
答案 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,它就开始工作了。