解决方法:
打开站点的 nginx 配置文件(一般在 nginx 目录的 conf/vhosts 下面),
把默认文档
index index.php index.html error/index.html;
改成
index index.php index.html;
即去除:error/index.html。
原因:
有时临时在本地测点东西又懒得开homestead时,就偷懒用了一下phpstudy,用的phpstduy8.1.1.3的版本,建立了网站后打开了目录索引。
然后在浏览器打开建好的站点后,并没有预期把目录里面的文件列出来,而是显示 为 404 Not Found。看了一下nginx vhost下新建站点的配置,如下:
server {
listen 80;
server_name test;
root "E:/test";
location / {
index index.php index.html error/index.html;
error_page 400 /error/400.html;
error_page 403 /error/403.html;
error_page 404 /error/404.html;
error_page 500 /error/500.html;
error_page 501 /error/501.html;
error_page 502 /error/502.html;
error_page 503 /error/503.html;
error_page 504 /error/504.html;
error_page 505 /error/505.html;
error_page 506 /error/506.html;
error_page 507 /error/507.html;
error_page 509 /error/509.html;
error_page 510 /error/510.html;
include E:/test/nginx.htaccess;
autoindex on;
}
location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}
autoindex on; 目录索引是已经打开的。搞了半天,最后终于找到原因。phpstudy在新建站点时会自动创建 error 文件夹,里面放了些 errop_page 的页面其中也放了 index.html,而大多人肯定是强迫症习惯性地把 error 文件夹删除掉。看到上面配置里站点的默认文件时,你也忽然明白原因了吧,
index index.php index.html error/index.html;
后面这段 error/index.html 实体目录已经被我删除,所以 nginx 报 404 Not Found.
解决方法,直接把上行的 error/index.html 删除。重启 nginx,搞定。
扩展笔计
可以再加上两个参数
autoindex_exact_size off;
默认为 on 时,显示文件大小的单位是 bytes
设置为 off 时,单位是Kb、Mb、Gb
autoindex_localtime on;
默认为 off,显示的文件时间为GMT时间。
设置为 on,则时间为文件的服务器时间。
location / {
index index.php index.html;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}