URL 缩短器可以传递参数吗?

Posted

技术标签:

【中文标题】URL 缩短器可以传递参数吗?【英文标题】:Can an URL shortener pass parameters? 【发布时间】:2011-02-04 02:10:28 【问题描述】:

我使用 bit.ly 来缩短我的网址。 我的问题 - 参数没有通过。 让我解释一下我使用http://bit.ly/MYiPhoneApps 重定向(假设)到http://iphone.pp-p.net/default.aspx 现在,当我尝试 http://bit.ly/MYiPhoneApps?param=xx 时,此参数不会添加到生成的 url。 我知道我可以创建一个额外的“短网址”,包括一个参数 - 所以 http://bit.ly/WithParam 会导致 http://www.mysite.com/somepath/apage.aspx?Par1=yy 等等。

但我想要的是有一个指向页面的短 URL - 然后我想向这个缩短的 url 添加一个参数 - 它应该(当然)登陆我的页面。

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

曼弗雷德

【问题讨论】:

在 bitly 的定价页面上,他们有一个企业计划的付费选项: 参数传递 - 当您缩短包含 URL 代码的链接时,保持链接参数不变。我还没有完全理解这意味着什么。 【参考方案1】:

rinogo 和 Jurgen 在 cmets 中提到

在Clickmeter

Destination URL : www.yoursite.com?myparam1=id1&myparam2=id2 
Tracking link   : www.go.clickmeter.com/38w2?id1=123&id2=abc 
After click     : www.yoursite.com?myparam1=123&myparam2=abc

在TinyUrl

Destination URL     : http://x.com?a=1
Shorten URL         : https://tiny url.com/y6gh7ovk
Shorten URL + param : https://tiny url.com/y6gh7ovk?a=2
Resultant URL       : http://x.com/?a=1&a=2

增加了发布 tinyurl 的空间

【讨论】:

我面临的问题是我已经缩短了几个贝宝长网址的固定部分以隐藏垃圾邮件中的电子邮件参数,但是如果我把 tinyurl 附加 & 将不起作用.com/XYZ? 它不起作用可能是因为扩展的 URL 将有两个?标志着扩展电子邮件中的第一个。任何想法,谢谢 看到这个了吗? tinyurl.com/y6gh7ovk?a=2;只有一个 '?'有没有。删除空间 我确实看到了。但是,当我在 tinyurl 尝试我的示例时,我被转发到 paypal,但它在 paypal 上失败了。我永远看不到实际的 url 扩展为什么。那么,我怎样才能看到扩展的 URL?我在 tinyurl 上找不到这个功能。我相信您的示例很清楚并且对您有用,但不适用于我的长 URL 案例。我该如何调试?谢谢。【参考方案2】:

没有技术原因无法完成。该服务只需要查看它正在发送的参数,然后相应地重写目标 URL。

问题在于它不一定很好地定义如何做到这一点。

假设你有一个 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 的一部分。这需要每个重定向更多的系统资源,如果您的服务使用非常频繁,这可能会成为一个大问题 - 您将需要更多的服务器能力来处理相同数量的重定向。我不认为这种权衡被认为是“值得的”。

【讨论】:

我希望它变成foo=bar&foo=baz,FWIW(添加到短网址的参数应该在长网址的所有参数部分之后)。我认为这在大多数情况下会产生合理的结果。 所以这在技术上(如我所想)是可能的——但某种“后勤”或“如何处理”的问题。如果有人知道允许添加参数的(稳定)服务,请告诉我。 @ManniAT:嗯,晚了 8 年,但看起来像 ClickMeter (and maybe others?) supports this。 嗯,晚了 8 年(第 2 位),tinyurl.com 可以做到这一点。 我的意思是,如果您为此目的选择加入,为什么要首先设置带有参数的目标网址?没有意义。【参考方案3】:

URL 缩短会根据完整的 URL(参数和所有)关联唯一键,因此无法将参数传递给缩短服务。

通常

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

必须生成不同的密钥

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

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

【讨论】:

当然是可能。 OP 的目的不是让两个目标 URL 映射到完全相同的短 URL - 一个键仍然只能映射到一个目标。他只是希望服务使用作为参数提供的附加信息来操纵目标。这两件事完全不同。 当然有可能 - 如果您是服务提供商并构建您的服务以允许这样做。但是 OP 专门讨论了 bit.ly。而且 bit.ly 和我所知道的任何其他当前 URL 缩短服务都支持短 URL 上的参数转发。

以上是关于URL 缩短器可以传递参数吗?的主要内容,如果未能解决你的问题,请参考以下文章

一些函数参数可以通过装饰器传递吗?

烧瓶装饰器:无法从 URL 传递参数

你能利用 Swift 的默认结构初始化器来简化参数传递吗?

我可以为 Google Data Studio 报告使用深层链接和/或在报告 URL 中传递数据源参数吗?

我可以通过pickerDate vuetify传递参数吗?

json的本质是字符串,那么可以通过url加参数的方式传递json字符串吗