我正在关注 nginx 的 wiki(http://wiki.nginx.org/WordPress)设置我的 WordPress
location / {
try_files $uri $uri/ /index.php?$args;
}
通过使用上述行,当找不到静态文件时,它将重定向到index.php
wordpress,这是可以的,但是......
问题:当我请求不存在的 php 脚本时,例如http://www.example.com/foo.php,nginx 将给我
No input file specified
我希望 nginx 返回 404 而不是上面的消息,因此主 fcgi 配置,我添加第二个try_files
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include /etc/nginx/fastcgi_params;
...
}
这有效,但我在寻找是否有更好的方法来处理它?
答案1
不,这是正常的处理方式。
答案2
在您的 PHP 位置中使用 try_files 仅当具有该特定 nginx 实例的服务器也具有 PHP 代码时才有效。当然情况并非总是如此,因此并非总是有效。
你可以做的是使用fastcgi_intercept_errors让 nginx 拦截来自 PHP 后端的错误,然后使用其自己的 error_page 错误处理程序处理这些错误。这允许您在 nginx 中定义自定义处理程序。