wordpress自定义404页面无法显示的解决办法

如果wordpress主题有自定义的404页面,但有时仍返回nginx自带的404 Not Found,这是为什么?

首先,排查是否关闭了nginx的跳转。

找到nginx配置文件中的以下两行:

error_page 404 /404.html;
error_page 502 /502.html;

删除,或者在每行前面加上#号注释掉,重启nginx。

如此时仍有部分错误链接返回nginx自带的404 Not Found,则应考虑wordpress并未接管全部访问,即wordpress不处理此部分链接,直接交由服务器程序处理,才会出现以上情况。

此时,启用伪静态可以解决问题。

找到wordpress设置-固定链接,将朴素型,改成其他任意一种形式。

然后在nginx配置中加入以下代码:

location / {
	index index.html index.php; 
	if (-f $request_filename/index.html){ 
		rewrite (.*) $1/index.html break; 
	} 
	if (-f $request_filename/index.php){ 
		rewrite (.*) $1/index.php; 
	} 
	if (!-f $request_filename){ 
		rewrite (.*) /index.php; 
	} 
} 

rewrite /wp-admin$ $scheme://$host$uri/ permanent;

保存,重启,应该可以解决wordpress自定义404页面无法显示的问题。