Я слежу за вики nginx (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;
...
}
И это сработало, но я ищу, есть ли лучший способ справиться с этим?
Использование try_files в вашем местоположении PHP работает только до тех пор, пока сервер с этим конкретным экземпляром nginx также имеет код PHP. Это, конечно, не всегда так и поэтому не всегда будет работать.
Что вы можете сделать, так это использовать fastcgi_intercept_errors чтобы nginx перехватил ошибки из вашего PHP-бэкенда, а затем обработал их собственным обработчиком ошибок error_page. Это позволяет вам создать собственный обработчик, определенный в nginx.
Нет, это нормальный способ справиться с этим.