Nginx 无法加载 WordPress 博客的自定义 404 页面

Nginx 无法加载 WordPress 博客的自定义 404 页面

我最近为运行在 Nginx 上的 WordPress 博客创建了一个自定义 404 页面。但是,该页面位于我的根目录之上。我以为我正确设置了参数,但它似乎不起作用(我仍然从我的主题中获取 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;
    }
...
...
...

谢谢!

答案1

我认为这里的问题是您需要向块中添加与块中相同的fastcgi指令。nginx 只处理一个块,并且它没有关于如何在块内实际执行 PHP 文件的信息。location /404.phplocation ~ * \.php$locationlocation /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;
}

相关内容