问题

我已从帮助中心删除文章。是否可以重定向来自已删除帮助中心文章的流量?

回答

免责声明:本文仅供说明之用。Zendesk 不支持代码,不保证代码质量,也不针对第三方技术(例如 JavaScript、jQuery 或 CSS)提供支持。如有任何问题,请将其发布在评论部分,或尝试在线搜索解决方案。

是的,无论此类流量来源如何,您都可以自动将访问这些 URL 的用户重定向到更有价值的页面。

访问帮助中心的自定义 JavaScript 文件

要实施这些解决方案,请访问帮助中心的 JavaScript 文件:

  1. 以管理员身份登录 Zendesk Support。下一步,单击顶栏中的 Zendesk 产品图标 (),然后选择 Guide。
  2. 在 Zendesk Guide 的右上角,选择 Guide 管理。
  3. 单击侧栏中的自定义设计图标 ()。
  4. 单击主题上的自定义。
  5. 单击编辑代码。
  6. 单击 script.js 文件。

Edit_JavaScript_In_Theme_.gif

注意:本文章中包含的解决方案指向 Javascript 重定向。这些重定向可能会影响 Google 搜索排名。因此,它们不适合长期或大规模部署。如果您有开发者,请使用重定向规则 API 进行帮助中心上的页面重定向。

查看下文示例,了解如何实施常见重定向工作流程: 

  • 示例 1:将一组已删除文章重定向到新的同等文章
  • 示例 2:将未翻译文章重定向到现有语言
  • 示例 3:将所有已删除文章重定向到一个特定页面
  • 示例 4:概括或指定哪些文章(或社区帖子)重定向到一个特定页面

示例 1:将一组已删除文章重定向到新的同等文章

在本例中,帮助中心有一组旧的已删除页面,每个页面对应一个新的重定向页面。在 JavaScript 文件的前几行中,有一行显示:

$(document).ready(function() {
注意:如果您使用最新版本的 Copenhagen 主题,此行可能会缺失。在这种情况下,请将代码放在以下侦听器之外。
window.addEventListener("DOMContentLoaded", () => {
}

在该行正上方插入以下代码:

  var oldIds = ["217352077", "216552968"];
  var newIds = ["216553098", "216552958"];

  for (var i = 0; i < oldIds.length; i++){
    if (window.location.href.indexOf(oldIds[i]) > -1) {
      window.location.href = 'https://YOURSUBDOMAIN.zendesk.com/hc/en-us/articles/' + newIds[i]; 
    }
  }

保存之前,编辑代码部分,其中列出了旧文章 ID 和新文章 ID:

  var oldIds = ["217352077", "216552968"];
  var newIds = ["216553098", "216552958"];

添加您的文章 ID,而非上面所列号码。要查找文章 ID,在浏览器中查看文章。URL 如下所示:

https://[YOURSUBDOMIAN].zendesk.com/hc/en-us/articles/203664386-Help-Center-guide-for-agents-and-end-users

在上面的 URL 中,文章 ID 是 203664386。

要使用此解决方案正确重定向,新旧文章 ID 必须位于数组中的相同位置。本例中,URL 含有 217352077 的文章将重定向到 216553098,含有 216552968 的文章现在将重定向到 216552958。

如上所示,务必给所有 ID 加上引号并以逗号隔开。如下所示:

  var oldIds = ["217352077", "216552968", "216552902"];
  var newIds = ["216553098", "216552958", "216552944"];

接下来,编辑此行中的 URL:

window.location.href = 'https://YOURSUBDOMAIN.zendesk.com/hc/en-us/articles/' + newIds[i]; 

请务必使用您的 Zendesk 子域名,或者使用帮助中心中正常显示的完整帮助中心 URL(如果该 URL 已通过白标成为您的 URL)。不要移除行尾:"+ newIds[i];"。这是循环将新文章 ID 添加到您 URL 的方式。没有它代码会失效。

示例 2:将未翻译文章重定向到现有语言

在此示例中,帮助中心内容有多种语言版本。如果您所有的内容都是英语版,但只有部分内容有法语和德语版。尝试访问法语或德语文章的用户将看到出错页面。此代码将访问者从错误页面重定向回现有的英语文章。

var notDefaultLanguage = window.location.href.indexOf('/en-us/') == -1;
var isArticle = window.location.href.indexOf('/articles/') > -1;
var isErrorPage = $(".error-page").length > 0;


if ( isArticle && notDefaultLanguage && isErrorPage ) {
    var newURL = window.location.href.replace(/(.*\/hc\/)([\w-]+)(\/.*)/, "$1en-us$3");
    window.location.href =  newURL;
}  

本例中只需要进行少量的自定义。如果您的默认帮助中心语言不是英语,请替换该语言。在代码中,en-us 出现在两个位置:

var notDefaultLanguage = window.location.href.indexOf('/en-us/') == -1;

和

var newURL = window.location.href.replace(/(.*\/hc\/)([\w-]+)(\/.*)/, "$1en-us$3");

将这两行中的 en-us 替换为您的默认语言代码。您可以在主要文章的 URL 中找到默认语言代码。例如,法语帮助中心页面的 URL 如下例所示:

https://[YOURSUBDOMAIN].zendesk.com/hc/fr/articles/214943538

示例 3:将所有已删除文章重定向到一个特定页面

本例中,帮助中心将所有已删除的文章(不包括社区帖子)重定向到一篇特定的文章。

在 JavaScript 文件的前几行中,有一行显示:

$(document).ready(function() {
注意:如果您使用最新版本的 Copenhagen 主题,此行可能会缺失。在这种情况下,将建议的代码包装到新的侦听器中:
window.addEventListener("DOMContentLoaded", () => {
}

在本例中,在该行正下方插入以下代码。重要提示,在此示例中,在上方插入将无效:

if ( window.location.href.indexOf('articles') > -1 && $(".not-found").length > 0 ) {
window.location.href = 'https://[YOURSUBDOMAIN].zendesk.com/hc/en-us/articles/216553068-error-redirect';
}

在此脚本中,将 URL 替换为您的帮助中心将重定向到的文章 URL。

此解决方案仅在我们确保您的出错页面存在 .not-found 类时有效。 

在显示 JS 链接的灰色栏中,单击主页链接。在该下拉菜单中查找并选择出错页面。在出错页面中,您会找到一个以代码 {{#is error 'not_found'}} 开头的区域,如下所示:

{{#is error 'not_found'}}
<h2>{{t 'nonexistent_page'}}</h2>
<p>{{t 'mistyped_address_or_moved_page'}}</p>
{{/is}}

添加一个新类到 h2 元素或 'not_found' #is 标签中的任意元素,如下所示:

<h2 class="not-found">{{t 'nonexistent_page'}}</h2>

示例 4:概括或指定哪些文章(或社区帖子)重定向到一个特定页面

借助此解决方案,您可以自定义 if 语句使其更具体或更笼统。例如,要从任何已删除文章或社区帖子重定向,请将 if 语句更改为:

if ( $(".not-found").length > 0 )

或者,仅重定向标题中带有单词 buttermilk 的已删除文章,则将 if 语句更改为:

if ( window.location.href.indexOf('buttermilk') > -1 && $(".not-found").length > 0 )

与第一个解决方案不同,这些解决方案将短暂显示出错页面,然后再重定向到新页面。这是因为它使用 JavaScript 搜索页面中的元素,该元素需要先加载。

由 Zendesk 提供技术支持