1

如何正确处理 php 站点的 nginx 配置中所有不存在的位置?我可以找出此类位置的 5 种可能情况。

  1. 不正确的文件:example.com/notexist.jpg

  2. 不正确的文件夹:example.com/notexist

  3. 嵌套不正确的文件夹:example.com/notexist1/notexist2/..../notexist10000

  4. (3)和(1)的组合:example.com/notexist1/notexist2/..../notexist10000 /not.exist.jpg

  5. 不存在的 php 文件:example.com/notexist.php

是否有涵盖所有这些情况的微小而强大的解决方案?还需要避免检查任何文件和目录(使用 -d 和 -f),因为它会增加 CPU 和 IO 开销。

提前致谢!

4

2 回答 2

1

try_files完全为我解决了这个问题

location / {
    try_files $uri $uri/index.html $uri.html =404;
}

在 not_found_page 中包含绝对路径也非常重要,否则页面布局将被破坏。

于 2012-12-27T16:05:21.280 回答
0

在所有 5 种情况下,通常会返回 404,因此您可以通过以下方式添加对所有这些情况的特殊处理:

  1. 创建命名位置
  2. 将该命名位置称为 404 错误页面:

这将产生:

server {      
  error_page 404 = @errors;

  location @fallback {
    # do whatever you want to do on faulty reqeusts
  }
}
于 2012-11-02T13:25:30.017 回答