【发布时间】: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