当我尝试访问名为“文件”的文件时,出现错误 404 - 未找到文件。
我在服务器上检查了它是否存在。是的,它确实存在。
我检查了该文件是否属于 webuser。是的。
我检查了正确的权限。775 应该可以工作,所以是的。
问题是,该文件没有被视为文件。Nginx 认为它是一个文件夹并搜索 index.html 文件。
2017/09/14 11:26:50 [error] 15085#15085: *3 "/srv/www/myfolder/file/index.html" is not found (20: Not a directory), client: 192.168.1.35, server: , request: "GET /myfolder/file/ HTTP/1.1", host: "example.com", referrer: "http://example.com/myfolder/"
我该如何改变这种情况?我也尝试了几个浏览器(FF、Safari)以及 cURL 和 wget。仍然出现 404 错误
更新 1
server {
listen 80 default_server;
rewrite ^([^.]*[^/])$ $1/ permanent;
gzip off;
location /mirror {
alias /srv/mirror;
autoindex on;
}
它是一个 Debian 镜像 - 如果我注释掉重写,我就会收到此错误:
BZ2_bzread: /var/lib/apt/lists/partial/mirror.com_debian_dists_stretch_main_i18n_Translation-en.bz2 Read error (-5: DATA_ERROR_MAGIC)
如果我再次评论说,它无法找到由于重定向而导致的发布文件...
答案1
你好,我可以看到您的 GET 请求是request: "GET /myfolder/file/
!
如果它是一个文件,GET 请求末尾应该没有反斜杠。
正确的请求将是。
request: "GET /myfolder/file
答案2
如果您希望重定向不以 结尾/
,则应将其从重定向配置中删除。
换句话说,改变
rewrite ^([^.]*[^/])$ $1/ permanent;
到
rewrite ^([^.]*[^/])$ $1 permanent;
答案3
我刚刚在我的服务器上修复了这个问题。错误的原因是一个符号链接。
我刚刚在我的服务器的 nginx 配置上遇到了这个(不太清楚的)错误消息:
"/path/to/index.html" is not found (20: Not a directory)
经过反复试验后,我确定实际原因是 nginx 无法访问站点的文档根目录,因为部分路径包含root
符号链接,但我已disable_symlinks on;
在主nginx.conf
文件中设置。
注释掉该disable_symlinks on;
行或将其更改为disable_symlinks off;
修复该问题。
也可以看看: