search

Home  >  Q&A  >  body text

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

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

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

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

高洛峰高洛峰2902 days ago362

reply all(2)I'll reply

  • 巴扎黑

    巴扎黑2017-04-10 13:12:41

    直接就会跳转了,为何需要用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。(打不开?你懂得)

    reply
    0
  • 怪我咯

    怪我咯2017-04-10 13:12:41

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

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

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

    reply
    0
  • Cancelreply