Недавно я создал специальную страницу 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
, которые есть в расположение ~ * \ .php $
блок. nginx обрабатывает только один блок location
, и у него нет информации о том, как на самом деле выполнить файл PHP один раз внутри блока location /404.php
.
Корень Директива
также неверна, она всегда должна содержать каталог, который используется в качестве базы, куда добавляется 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;
}