-1

我正在努力找出使用javascript进行一些模式匹配来重定向/重写url的最佳方法。

背景:

我有一个按标签过滤的博客:http ://adrtimesv6.squarespace.com/library/?tag=The+Psychology+%26+Neuroscience+of+Mediation (如果出现,请选择以访客身份查看)

我在站点中有另一个区域称为“集合”,我在其自己的真实页面中从库中加载一组帖子,在更受控的环境中加载其他内容,页面标题和 URL 更适合 seo,如下所示:http: //adrtimesv6.squarespace.com/collections/the-psychology-and-neuroscience-of-mediation。这些帖子是通过一个查询加载的,该查询从库中提取具有与集合页面名称匹配的标签的帖子。这工作得很好。我遇到的问题是,当有人按标签过滤博客文章时,我希望它们被重定向到收藏页面,而不是转到博客过滤页面。

问题:

我想弄清楚的是如何使用 jquery 将所有 /library/?tag=[path] url 重定向到 /collection/[path] url。为此,我认为我需要使用 jquery 来:

1) 交换“/libary/?tag=”到“/collections/”

2) 将路径的其余部分从标记格式路径“The+Psychology+%26+Neuroscience+of+Mediation”修改为我的收藏格式路径:“the-psychology-and-neuroscience-of-mediation”

附加信息:

我正在使用 CMS,因此我无法访问 .htaccess 文件之类的内容。在 CMS 管理设置中有一个 url 重定向面板,它允许我以这种格式列出一些基本的重定向:-> ...但是尝试使用标签过滤器 url 不起作用。

我最关心的是当用户单击博客文章底部列出的标签时发生的这种重定向 - 所以我可以使用 jquery 修改博客文章列出的标签中的 href 属性。只是不确定如何编写模式匹配并正确重写格式。我尝试了很多东西,但似乎无法得到它。

或者也许以某种方式使用 window.location.replace ?

更新:在我的特殊情况下,我发现我可以更新我的模板代码和 json 格式化程序,以便生成的标签链接 href 与集合部分中的 url 匹配 - 所以我的问题得到了解决....但是,我仍然想知道我是如何会在其他情况下处理这个问题。

基本上,1)如何使用javascript或jquery检查url(页面上的href或浏览器url)是否包含某些内容,然后将其替换为其他内容,然后修改完整的url,使其成为一个简单的虚线url ....取出所有 + 符号并将它们替换为 - 并删除 & 字符的 %26 以返回简单的 url 字符串等,例如:/here-is-the-path

4

1 回答 1

0

在单个页面上,您可以使用它来将访问者转发到新页面:

window.location = "http://www.google.com"

您可以添加逻辑以在每个页面上使用相同的脚本。例如:

if ( document.location == "http://adrtimesv6.squarespace.com/library/?tag=The+Psychology+%26+Neuroscience+of+Mediation" ) {
  window.location = "http://adrtimesv6.squarespace.com/collections/the-psychology-and-neuroscience-of-mediation"
}

等等。您甚至可以添加更高级的字符串操作来处理每个 URL。

但是以这种方式进行 JavaScript 重定向不会产生积极的 SEO 效果,例如友好的 URL。它不会让您的网络服务器处理新的 URL;如果http://adrtimesv6.squarespace.com/collections/the-psychology-and-neuroscience-of-mediation从您的网络服务器返回错误,那么再多的前端 JavaScript 都无法解决这个问题。

使用 JavaScript 执行此操作可能会给您的用户带来负面体验,因为他们首先必须从第一个 URL 下载页面,然后执行 JavaScript,然后从新 URL 下载页面。

于 2013-08-08T20:26:59.543 回答