首先,我想明确一点,当涉及处理404错误时,我知道最佳实践是什么。然而,我有一个特殊情况,可能需要量身定制的方法。
我正在处理一家拥有超过10年档案的报纸网站,有150,000多个努力制作的内容和大量的链接仍在被点击。它也经历了许多麻烦:在WP之前的3种不同CMS,每种都有自己的链接结构和不适当的重定向,在每次更改时都发生。因此,从SEO的角度来看,这些档案几乎已经“丢失”了。
由于超过90%的内容错位,显示经典的404并不是一个真正的选择。应急出口是将URL中的单词重定向到搜索查询(过滤常数后)并希望获得最好的结果。在大多数情况下,相关结果会显示在顶部,但并非总是如此。因此,我认为假装404不存在是错误的。
我想到的另一种方法是:保留URL的原样,发送404状态,但使用404模板在相关单词上显示搜索查询(使用's'参数的WP_query)。
这样做的好处是,在强匹配(几乎肯定是“I'm feeling lucky”的匹配项)的情况下,我可以决定强制进行实际的301重定向。不过,并非总是如此:有时实际想要的文章在列表中非常靠后。尽管如此,它几乎可以正常工作,但由于某种原因,分页在404上不起作用。因此,我认为需要做以下两件事之一:
1. 简单解决方案(如果可能的话):以某种方式使分页在404模板上工作——因为我不知道为什么不起作用,也不知道是否可以或如何解决。(更新:很可能是因为分页查询变量/标识符被视为搜索的一部分)
我正在处理一家拥有超过10年档案的报纸网站,有150,000多个努力制作的内容和大量的链接仍在被点击。它也经历了许多麻烦:在WP之前的3种不同CMS,每种都有自己的链接结构和不适当的重定向,在每次更改时都发生。因此,从SEO的角度来看,这些档案几乎已经“丢失”了。
由于超过90%的内容错位,显示经典的404并不是一个真正的选择。应急出口是将URL中的单词重定向到搜索查询(过滤常数后)并希望获得最好的结果。在大多数情况下,相关结果会显示在顶部,但并非总是如此。因此,我认为假装404不存在是错误的。
我想到的另一种方法是:保留URL的原样,发送404状态,但使用404模板在相关单词上显示搜索查询(使用's'参数的WP_query)。
这样做的好处是,在强匹配(几乎肯定是“I'm feeling lucky”的匹配项)的情况下,我可以决定强制进行实际的301重定向。不过,并非总是如此:有时实际想要的文章在列表中非常靠后。尽管如此,它几乎可以正常工作,但由于某种原因,分页在404上不起作用。因此,我认为需要做以下两件事之一:
1. 简单解决方案(如果可能的话):以某种方式使分页在404模板上工作——因为我不知道为什么不起作用,也不知道是否可以或如何解决。(更新:很可能是因为分页查询变量/标识符被视为搜索的一部分)
如果只有可行的复杂解决方案: 使用搜索模板本身。通过使用 $wp_rewrite->search_base = '';
钩入重写规则,可以完全删除“搜索”缩略词。从理论上讲,它可以将几乎任何网址转换为搜索。但巨大的问题是,它也会将除类别和标签以外的所有内容(包括文章名称等)都变成搜索。
因此,我从中得出以下结论:每当有URL请求时,WordPress 会查找是否存在匹配的类别,然后是标签,然后才进行搜索。只有在这之后,WordPress 才会查找匹配的作者、归档、文章等。如果我能想办法钩入 WordPress 关于 URL 解析优先级的内部规则,并将搜索的优先级移到列表末尾,问题就会得到解决。
我必须承认,我没有尝试过任何实际代码。我不知道从哪里开始,也不知道具体要搜索什么,而且似乎很难找到我想要的文档。到目前为止,我所能做的只是像上面描述的盲目测试。
因此,问题是是否有任何方法来实现上述任一方式,以及如何实现。