【发布时间】:2015-09-19 03:52:39
【问题描述】:
首先,我想明确表示我知道处理 404 错误时的最佳做法是什么。但是,我有这种特殊情况,我可能需要量身定制的方法。
我正在处理一个拥有超过 10 年档案价值的报纸网站,其中包含 15 万多条辛勤工作的内容和大量仍然可以点击的链接。它也经历了很多麻烦:在 WP 之前有 3 个不同的 CMS,每个都有自己的链接结构,并且每次更改时重定向不正确。所以现在从 SEO 的角度来看,这些档案几乎都“丢失”了。
超过 90% 的内容放错了位置,显示经典 404 并不是一个真正的选择。紧急出口是将 URL 中的单词重定向到搜索查询(在过滤掉常量之后)并希望最好。在大多数情况下,相关结果显示在顶部,但并非总是如此。因此,我认为假装 404 根本不存在是错误的。
我想到的另一种方法是:逐字保留 URL,发送 404 状态,但使用 404 模板在相关字词上显示搜索查询(WP_query 带有 's' 参数)。
这样做的好处是,在强匹配(几乎可以肯定是“我感觉很幸运”的匹配)上,我可以决定强制执行实际的 301 重定向。 但是,情况并非总是如此:有时实际想要的文章在列表中很远。尽管如此,它几乎可以正常工作,除了由于某种原因分页不适用于 404。所以现在我认为需要做两件事之一:
简单的解决方案,如果可能的话:以某种方式使分页在 404 模板上工作 - 因为我不知道为什么它还没有,我不知道它是否可以完成或如何完成。 (更新:很可能是因为分页查询 var/slug 被视为搜索的一部分)
如果可行的话,复杂的解决方案:使用搜索模板本身。可以通过使用
$wp_rewrite->search_base = '';连接到重写规则来完全删除“搜索”slug,理论上这几乎可以将任何扔给它的 url 变成搜索。最大的问题是它还对邮件名称和除类别和标签之外的所有其他内容执行此操作。 所以我从中得到以下信息:每当有 URL 请求时,Wordpress 会查看是否有类别匹配,然后是标签,然后它会进行搜索。只有在那之后,它才会寻找匹配的作者、档案、帖子等。如果我能以某种方式连接到 wordpress 关于 url 解析优先级的内部规则并将搜索内容移动到列表的末尾,问题就会得到解决。
我不得不承认我没有尝试任何实际代码。我不知道从哪里开始,我不知道要搜索什么,而且我想要的文档似乎也很少。到目前为止,我所能做的就是盲测,如上所述。
所以问题是是否有任何方法可以做到以上任何一个以及如何做。
【问题讨论】:
-
那个“404 模板”是 WP 特有的吗?无论如何,为什么不通过 ajax 进行“分页”呢?当有人滚动到底部时,ajax 会将下一个 X 结果加载到活动页面中,而无需任何重新加载或 URL 更改...
-
模板并不具体,我猜它的工作方式是。分页实际上是通过 ajax 完成的,但目标页面仍然需要首先创建,这不会发生。
标签: php wordpress redirect search pagination