【问题标题】:Modify href -or- URL Redirect / Rewrite and pattern matching using javascript or jquery使用 javascript 或 jquery 修改 href -or- URL 重定向/重写和模式匹配
【发布时间】:2013-08-08 20:01:46
【问题描述】:

我正在努力找出使用 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

【问题讨论】:

  • URL 重写必须在服务器端完成,而不是客户端。
  • @roasted - 我认为你不明白我在问什么。 1)我无权访问服务器端,所以这不是一个选项,2)应该有一种方法可以通过标签链接来定位过滤器博客上的 href 属性,以便它执行我上面概述的两个步骤并将用户带到我创建的集合页面,而不是按标签页面的内置过滤器 - 或者使用 javascript 检查页面 url 和重定向的某种方式。
  • 也许我可以这样做:'if (path.match("/library/?tag="))' - 使用它来检查标签链接href,然后交换匹配的部分“/collections/”的路径可能会解决难题的第一部分。 - 然后我需要弄清楚如何存储路径的其余部分,更改其格式以匹配集合链接格式,然后应用它来制作应该使用的新 href?
  • 如果我明白你的意思,试试:$(function () { $('a.tag.link[href^="/library/?tag"]').attr('href', function () { return '/collections/' + $(this).attr('href').split('=').pop().toLowerCase().replace(/\%26/g, 'and') }); });

标签: javascript jquery redirect url-rewriting pattern-matching


【解决方案1】:

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

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 从您的 Web 服务器返回错误,那么再多的前端 JavaScript 都无法解决这个问题。

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

【讨论】:

  • 因为我只使用此重定向来按标签 url 过滤博客(无论如何都不会被搜索引擎抓取或列出),所以我不太关心这些 seo 问题。另外,如果我使用 jquery 来修改页面上标签链接的 href 而不是实际重定向 url,那么根本就没有 seo 问题。
  • 还请注意此处有关使用 window.location.replace 的信息,以避免在保持引荐来源数据完整、保持用户历史记录正常工作等方面出现问题:stackoverflow.com/questions/503093/…
  • 我的问题不是如何使用 javascript 简单地将一个页面重定向到另一个页面,而是如何使用 javascript 修改这些博客的 url 或 href 链接,这些博客通过标签链接以动态方式过滤,所以他们都重定向而不必列出每个。我需要帮助找出模式匹配。
  • @VUELA - 所以你只是在研究“高级字符串操作”组件?到目前为止你有什么?
猜你喜欢
  • 2016-11-18
  • 2023-01-10
  • 2010-10-25
  • 2015-05-24
  • 1970-01-01
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多