web-dev-qa-db-ja.com

URL短縮サービスはパラメータを渡すことができますか?

URLを短くするためにbit.lyを使用しています。私の問題-パラメーターは渡されません。 http://bit.ly/MYiPhoneApps を使用して説明してみましょう。これは http://iphone.pp-p.net/default.aspx にリダイレクトします。 http://bit.ly/MYiPhoneApps?param=xx を試すと、このパラメーターは結果のURLに追加されません。パラメーターを含む余分な「短いURL」を作成できることはわかっています。したがって、- http://bit.ly/WithParamhttp://www.mysite.com/somepathになります/apage.aspx?Par1=yy など。

しかし、私が欲しいのはページに導く短いURLを持っていることです-そして、この短縮されたURLにパラメータを追加したいです-それは(もちろん)私のページに表示されます。

これはbit.lyの短所ですか(および他の人がそれを行うことができるかもしれません)-または「パラメーター転送」が301リダイレクトで機能しないのですか?

マンフレッド

44
ManniAT

それができなかった技術的な理由はありません。サービスは、送信されているパラメーターを確認し、それに応じてターゲットURLを書き換えるだけです。

問題は、その方法が必ずしも明確に定義されていないことです。

http://example.com/default.aspx?foo=barというURLがあり、http://foo.com/ABCDという短いURLがあるとします。 http://foo.com/ABCD?foo=bazにアクセスしようとするとどうなりますか?値を置き換える必要があるので、foo=bazを取得しますか? foo=bar&foo=bazに追加する必要がありますか?両方を含める場合、どちらの順序にする必要がありますか?

システムは、URLに両方のパラメーターが必要な場合があるため、どのパラメーターがオーバーライドしても安全で、どのパラメーターがオーバーライドされないかを知ることができません。

「さて、パラメータが既に存在するURLにはこれを許可しないでください」と主張することもできますが、プロセスがさらに複雑になるという問題もあります。これがなければ、データベースでキーを検索し、リダイレクトヘッダーを送信するだけです。ここで、URLを分析してパラメーターを確認し、呼び出されたURLの一部を追加する必要があります。そのため、リダイレクトごとにより多くのシステムリソースが必要になります。これは、サービスが頻繁に使用される場合に大きな問題になる可能性があります。同じ量のリダイレクトを処理するには、より多くのサーバー電源が必要です。トレードオフは「価値がある」とは考えられません。

18
Michael Madsen

URL短縮では、完全なURL(パラメーターおよびすべて)に基づいて一意のキーが関連付けられるため、パラメーターを短縮サービスに渡すことはできません。

通常

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

異なるキーを生成する必要があります

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

パラメータは短縮URLの有効な部分ではないため、「パラメータ転送」はこの種のリダイレクトでは単純に不可能です(すべてではないにしても)。

3
David Johnson

rinogo によるコメントで述べたように

クリックメーター

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

In 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を投稿するスペースを追加しました

1
SmartManoj