I have a web application which uses URLs that look like this:
http://library.example.com/Register.aspx?query=academic&key=586c70bb-5683-419c-aae9-e596af9ab66a
(The GUID is used instead of a plain int to discourage guessing, which is all we need for now.)
The problem: that long URL frequently breaks when sent via email. It’s humans sending the emails, so I can’t control the formatting. Sometimes it’s the sending email program at fault, sometimes the receiving, but regardless I’m spending too much time on talking people through fixing problems.
Everything has to be from this domain, so I can’t use a third-party shortener. I could host my own, but that seems like a kludge.
Any suggestions?
Edits
@Sunny: Thanks for elaborating, but my situation differs from what you assume. A corporate customer (of mine) passes this URL to its employees, and they use it to get to a branded Registration page. They need to give a working email as part of registration, and that gets forwarded to the corporate supervisor.
Registration gets them access to a database, but what they see is not specific to the corporate customer. So the occasional interloper is not a big deal; when they get weeded out by the corporate supervisor, we invite them to subscribe.
@Everybody: the email breakage is not on the punctuation (?&=), but at some predetermined line-length. Surprised me, too. Note that the domain name is long, as is the path to the virtual directory, which is a part of the problem.
After reading the responses, I’m going to use base64 as a pseudo-shortener, something like:
http://a.MyLongDomainName.com/?q=a&key=base64_encoded_GUID
…and see if that survives. Thanks to all.
You can at least shorten it a bit. Right now, you’re send a GUID, which is a 128-bit number, in a format that is essentially hexadecimal with extra dashes. If you view the GUID as a byte array and convert it to Base64, you can cut things down a bit. Likewise, “query=academic” could be “q=a”.
The GUID is currently taking up 36 characters. Converting to Base-64 cuts this down to 22, saving 14 chars. Replacing “query=academic&key=” with “q=a&k=” shaves off another 13. Cutting a total of 27 characters may well keep your URL short enough not to wrap, despite the presence of ampersands and equal signs.
One more detail: the Base-64 text is going to end with an “=”, which will then be hex-encoded into “%3D”. The solution is to cut that character off, because it’s just padding.
With credit to the original posters, it looks like the best bet is a combination of things: