如何将所有404页面重定向到主页?

您好,

是否可以自动将所有损坏的 404 页面重定向到主页或其他页面?

此致

3 个赞

由于 Discourse 不使用 htaccess,我不确定在哪里可以找到解决方案。任何帮助都将不胜感激 :slight_smile:

也许你可以构建一个插件来实现这一点?

立即重定向可能会令人困惑,所以为什么不让 404 路由在短暂延迟后重定向到主页,并附带一条相应的消息?

这或许可行,但我不知道该怎么做 :confused:

有这样的插件吗?

我不这么认为。你可以去 Marketplace

Htaccess 不应该被使用,即使 Discourse 前面有 Apache2——但实际上并没有。

Docker 会让事情变得更复杂 :wink: 我不知道该如何处理。但如果你愿意,可以在 Discourse 前面放置 Nginx(或其他任何服务器/反向代理)。然后这样的重定向应该是一个相当简单的任务。你可以做类似这样的事情:

但你为什么要首先将 404 重定向回主页呢?如果用户在寻找某样东西却得到了主页而不是想要的东西或 404,这会有点令人困惑。然后该用户会再次尝试,因为也许她/他做错了什么,或者该网站有问题。完全不必要,而且每个网站都应该显示错误 404 而不是某种奇怪的重定向是有原因的。

我正在将我的 WordPress 博客迁移到 Discourse。现在由于链接结构不同,迁移后将会有大量的 404 页面。我无法手动为每个页面设置重定向,因此我需要一种自动执行此操作的解决方案。

是的,但这并不是一个解决方案。这只是一个糟糕的修复,仅此而已。你的网址结构仍然是错误的,你只是在隐藏它。而且,你不能那样转移SEO价值;)

无论如何——你那里有一个服务器。试试用它?

如果您为 WordPress 和 Discourse 站点使用不同的子域,您很可能可以在 WordPress 服务器端完成此操作。

可以修改 page_not_found.title(原为“哎呀!该页面不存在或已设为私有。”),可惜的是,没有类似 page_not_found.content 的内容可以让您详细解释情况。

1 个赞

有一个名为 detailed 404 的管理员设置,不知是否有用?

该选项不涉及任何重定向,如果我没记错的话。

那些链接指向的内容……是否将迁移到 Discourse?例如,如果那些链接指向您正在转换为主题的博客文章,那么您可以创建永久链接:Redirect old forum URLs to new Discourse URLs using permalinks

您也可以将这些 URL 重新映射到其他内容。假设 URL 具有一些共同的格式,您可以使用 REGEX 和 remap 命令来替换它们:

remap [--global,--regex] FROM TO

如何使用该命令的示例:

discourse remap --regex "\\[\/?color(=[^\]]*)*]" "" # 移除 "color" bbcodesc
1 个赞

除非在 WordPress 服务器上执行此操作,否则将无法同时满足 Google 和用户的需求。

1 个赞

5 个帖子已拆分到一个新主题:删除主题后如何重定向到主页?

您可以使用“自定义”功能将所有损坏的 404 页面重定向到主页或其他页面。
转到“自定义” > “主题” > “创建新主题”部分 > 为您的主题命名,例如“404 重定向”,并将“基础主题”设置为“默认”。
然后创建新主题 > 编辑 CSS/HTML。在 HTML 部分,创建一个 JavaScript 代码段来处理重定向。
粘贴此代码。

<script type="text/discourse-plugin">
  api.onPageChange((url, title) => {
    // 将所有 404 页面重定向到主页
    if (url.includes('/404')) {
      window.location.href = '/';
    }
  });
</script>

请根据您的需要调整页面名称。阅读此 将旧 URL 重定向到新的 Discourse URL