通过检测 URL 指定字符跳转链接

TiMan
  • 8

想做一个个人博客的小功能做练习,想检测如这样的链接后缀:

http://example.com/?c=123123

通过 JS 来识别链接中的 ?c=123123 然后填转到指定链接,请问如何实现更好?谢谢!

回复
阅读 5.3k
2 个回答
Humphry
  • 16.4k

直接就会跳转了,为何需要用JS判断?

如果是说通过query string来判断需要呈现的内容,前端可以做到,但相比比来,后端更适合做这样的工作。

http://example.com/?d=123123#abc

?以后到#之前,这段内容称为query string。而#以后,称为url hash(注意,这里的hash和hash算法的hash不一样)。

二者有区别:

名称 地址形式 前端的获取方法 后端的获取 在前端修改之后造成网络请求
url hash #… window.location.hash 取不到 不会
query string ?a=&b=… window.location.search 取得到 是的

注意:

在前端:

  • 修改query string,会发起网络请求,页面会刷新,这时前端的上下文已经发生了改变。因此不建议用前端判断/修改query string
  • 修改url hash,不会发起网络请求,页面不会刷新,前端的上下文没有变化。

最好严格区分query string和url hash,query string用于后端判断,url hash用于前端判断。

因此:

  • 在后端,可以用query string判断需要呈现什么
  • 在后端,还可以构造这样的形式的地址做判断

    • http://example.com/c/123123
  • 在前端,用query string判断用以呈现的内容,不如用url hash判断用以呈现的内容(query string应该是后端的事情)。这样做,一般是用于区分:同一个页面,通过ajax来获取了不同的数据。用户可以粘贴这个地址到其他地方,依然可以回到用户当前所在的状态。

query string和hash的区别还可以看这个slideshare。(打不开?你懂得)

首先需要建立 关键字符串与对应网址的一一对应表,一般存储在数据库里面。

然后 根据请求字符串 查寻数据库 实施跳转。不需要利用js.

跳转可以直接使用 header(),也可以使用js.

宣传栏