Назад | Перейти на главную страницу

Nginx не загружает пользовательскую страницу 404 для блога WordPress

Недавно я создал собственную страницу 404 для своего блога WordPress, работающего на Nginx. Однако страница находится над моим корневым каталогом. Я думал, что правильно установил параметры, но похоже, что это не работает (я все еще получаю страницу 404 из моей темы). Я что-то упустил? Буду признателен за любую помощь.

...
...
...
root /var/www/wordpress/sitenamehere;           #Set document root
autoindex off;                                  #Turn off index browsing everywhere
index index.php index.html;                     #Set indexes to include .php before .html

#Error pages
error_page 404 /404.php;
location /404.php {
  root /var/www/custom_404/404.php;
  internal;
}

location / {
try_files $uri $uri/ /index.php?$args;
...
...
...
 location ~* \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $request_filename;
    fastcgi_index index.php;
    include fastcgi_params;
    }
...
...
...

Спасибо!

Я думаю, проблема в том, что вам нужно добавить такой же fastcgi директивы к location /404.php блок, как есть в location ~ * \.php$ блок. nginx обрабатывает только один location блок, и у него нет информации о том, как на самом деле выполнить файл PHP, когда он находится внутри location /404.php блок.

В root Директива также неверна, она всегда должна содержать каталог, который используется в качестве базы, куда добавляется URI для поиска ресурса. В вашем случае эта конфигурация должна работать:

location /404.php {
    root /var/www/custom_404;
    fastcgi_param SCRIPT_FILENAME $request_filename;
    fastcgi_param DOCUMENT_ROOT $document_root;
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    include fastcgi_params;
}