如何正确处理php网站的nginx配置中所有不存在的位置? 我可以找出这些地点的5种可能情况。
文件不正确: example.com/notexist.jpg
文件夹不正确: example.com/notexist
嵌套不正确的文件夹: example.com/notexist1/notexist2 /..../ notexist10000
(3)和(1)的组合: example.com/notexist1/notexist2 /..../ notexist10000 / not.exist.jpg
不存在的php文件: example.com/notexist.php
是否有涵盖所有这些案例的微小而强大的解决方案? 还需要避免检查任何文件和目录(使用-d和-f),因为它会增加CPU和IO开销。
提前致谢!
答案 0 :(得分:1)
try_files 完全解决了我的问题
location / {
try_files $uri $uri/index.html $uri.html =404;
}
在not_found_page中使用绝对路径也是非常重要的,否则页面布局会被破坏。
答案 1 :(得分:0)
在所有5个案例中,通常会返回404,因此您可以通过以下方式添加对所有案例的特殊处理:
会产生:
server {
error_page 404 = @errors;
location @fallback {
# do whatever you want to do on faulty reqeusts
}
}