我有一个WordPress网站和一个自定义主题,当然还有一个404.php
文件。我遵循了这个神奇的指南,让404页面模板可以用块编辑器编辑。
当我转到/404
(或者任何无效链接(时,404页面上的组件都会正确显示,但是,当转到/404
时,用户会被重定向到/404-2
这是我想要修复的行为。当用户转到/abc
(无效页面(时,显示404,并且他们没有被重定向并且仍然在/abc
上(这是预期的(。
我在WP中检查了页面,URL slug被设置为/404-2
,并试图将其更改为404,只是默认返回404。这似乎是由于404是一个数字和默认的WP行为。但这只是告诉我为什么会出现问题;我不知道如何覆盖或纠正这种行为。提前谢谢。
通过挂接do_redirect_guess_404_permalink
修复
请参阅https://developer.wordpress.org/reference/hooks/do_redirect_guess_404_permalink/
<?php
function stop_redirect_guess() {
return false;
}
add_filter( 'do_redirect_guess_404_permalink', 'stop_redirect_guess');
?>
正如您所发现的,页面标题"404〃;(或任何数字标题(将总是重写为";404-2";,这样可以确保标题是不同的/永远不会与数字帖子/页面id混淆。
一个简单的解决方案是将页面重命名为"0";404页";并将php函数更新为CCD_ 9。这将为您的页面提供更SEO友好的/404-page
url,而不需要尝试更改.htaccess文件的永久链接/重写。
如果使用WordPress 5.9或更高版本,可以考虑将自定义主题迁移到块主题。这将使您能够创建一个真正的";404〃;使用块编辑器的页面模板,该块编辑器可以通过Site Editor > Templates
进行编辑。网站编辑器使您能够添加新模板,保存和导出它们,以便为自定义主题轻松创建自己的模板。从《二十二》这样的基本主题开始,是了解可能发生的事情的好方法。这与创建";经典的";基于php的主题;尽管块模板和网站编辑器的优势对未来验证您的主题有很大的好处。