我最近为运行在 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.php
location ~ * \.php$
location
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;
}