代码之家  ›  专栏  ›  技术社区  ›  ManniAT

一个url shortener可以传递参数吗?

  •  41
  • ManniAT  · 技术社区  · 14 年前

    我使用bit.ly来缩短我的url。 我的问题参数没有通过。 我来解释一下 http://bit.ly/MYiPhoneApps 它将重定向(比方说)到 http://iphone.pp-p.net/default.aspx 现在当我试着 http://bit.ly/MYiPhoneApps?param=xx 此参数不会添加到结果URL。 我知道我可以创建一个额外的“短url”,包括一个参数-so http://bit.ly/WithParam 会导致 http://www.mysite.com/somepath/apage.aspx?Par1=yy 等等。

    但我想要的是有一个指向页面的短url,然后我想给这个短url添加一个参数,这个参数应该(当然)落在我的页面上。

    这是bit.ly的一个缺点(其他人可能也能做到)还是“参数转发”不适用于301重定向?

    曼弗雷德

    2 回复  |  直到 6 年前
        1
  •  18
  •   Michael Madsen    14 年前

    没有技术上的原因不能做到。服务只需查看发送的参数,然后相应地重写目标url。

    问题是,如何做到这一点并不一定很明确。

    假设你有网址 http://example.com/default.aspx?foo=bar ,它有一个简短的url http://foo.com/ABCD . 如果你试图访问 http://foo.com/ABCD?foo=baz ?如果它替换了值,那么 foo=baz ?是否应将其附加到 foo=bar&foo=baz ?如果我们把这两种都包括在内,它们应该是哪一种?

    系统无法知道哪些参数可以安全地重写,哪些不可以重写,因为有时,您确实希望在url中同时使用这两个参数,而且添加的顺序可能很重要。

    你可以说“好吧,只是不允许在参数已经存在的url中这样做”,但也有一个问题,那就是它会使过程复杂得多。如果没有这个,只需在数据库中查找一个键并发送一个重定向头。现在,您还需要分析url以检查参数,并附加被调用的url的一部分。每个重定向需要更多的系统资源,如果您的服务经常使用,这可能会成为一个大问题-您将需要更多的服务器电源来处理相同数量的重定向。我不认为这种折衷是“值得的”。

        2
  •  4
  •   David Johnson    14 年前

    url shorting基于完整的url(参数和all)关联一个唯一的键,因此不可能将参数传递给shorting服务。

    典型地

    http://iphone.pp-p.net/default.aspx?param=10

    必须生成不同的密钥

    http://iphone.pp-p.net/default.aspx?param=22

    “参数转发”在这些类型的重定向中是不可能的,因为参数不是缩短的url的有效部分是大多数(如果不是全部)服务。