UPDATE: bit.ly now allows custom domains without having to pay. Additionally, there are services like Droplr, CloudApp and JumpShare. Currently, I use Droplr for my personal short links and file sharing. and we use CloudApp for my company short links and file sharing. This article mainly discusses how you could have achieved this in the past before bit.ly made branded short domains available and before these other services existed.
Overview
These days, URL shortener services like bit.ly are a dime a dozen. However, the latest craze are branded, shortened URLs like amzn.to instead of amazon.com, nyti.ms instead of nytimes.com, tcrn.ch instead of techcrunch.com, huff.to instead of huffingtonpost.com. You’ve probably seen URLs like these floating around Twitter, Facebook, IM and even email. These abbreviated domains offer the same benefits of a short URL provided by a service like bit.ly (ideal for use on Twitter, etc.) without sacrificing the branded experience and marketing that is achieved by using a “full-size” URL. They are the “compact car” of URLs and they are your friend!
Hence the reason for new services like bitly.Pro. In case your unfamiliar, bitly.Pro is a new service offered by bit.ly that allows companies and individuals to brand their shortened URLs using their own abbreviated domains. Amazon.com already uses http://amzn.to. The New York Times uses http://nyti.ms. Many other companies are using bitly.Pro as well. You may already have your very own abbreviated domain that you’d like to use to brand your shortened urls. If not, go get one. So, like me, you figure you’ll head on over to http://bitly.pro/signup to sign up for the free beta only to find out that the beta is closed to new users at this time. (Update: bitly.Pro beta has re-opened and you can signup here: http://bit.ly/a/pro_request).
But wait…before you begin cursing bit.ly about their closed beta, allow me to present a quick solution that still allows you to brand your shortened links and track traffic to your branded service. It won’t give you the analytics regarding how your content is begin distributed across Twitter, Facebook, etc. (although you could build that in fairly easily), but for someone who just wants a simple branded url shortener solution, it will fit the bill.
So, without further ado, here’s the simple ASP.NET MVC-based solution that provides a simple bitly.Pro-like solution of your very own. Best of all, you can get it going in under 10 minutes. Of course, you could build the same solution entirely with javascript and an html page, but where’s the fun in that?
Getting Started
The easiest way to get started is to head over to http://www.asp.net/ and use the Web Platform Installer to install Visual Web Developer 2010 and ASP.NET MVC 2.
Once you’ve got these installed, fire up VS2010 and add a new “ASP.NET MVC2 Empty Web Application.”
You should end up with something that looks like this:
The Controller
The first thing we want to do is setup a controller to handle our requests, so right-click the Controllers directory in the Solution Explorer and select Add > Controller.
We’ll name ours “HomeController” and, since we won’t be doing anything with an actual model, we’ll leave the box unchecked that prompts us to create actions methods for Create, Update and Delete scenarios.
Our HomeController is going to be very simple and will look like this:
using System.Web.Mvc; namespace bitlyProSimple.Controllers { [HandleError] public class HomeController : Controller { public ActionResult Index(string linkid) { Response.StatusCode = 302; Response.RedirectLocation = (string.IsNullOrWhiteSpace(linkid) ? "https://anderly.com" : string.Format("http://bit.ly/{0}", linkid)); return new ContentResult(); } } }
Our controller is going to accept a string (the linkid) and then contstruct a 302 redirect to bit.ly to finish the job. This allows us to simply use the bit.ly analytics when you have a bit.ly account.
As you can see, we are using bit.ly, but you could very well use any other URL shortener service. Essentially, what we’ll be doing is mapping requests that match the format http://[yourdomain]/[linkid] to our HomeController which will accept the linkid as a parameter and then prepare to forward our request to bit.ly. So in my case, my abbreviated domain is http://ander.ly. So, I’ll be mapping any requests that match the http://ander.ly/[linkid] format to be forwarded to http://bit.ly/[linkid].
In case there isn’t a link id, we will simply redirect to the blog home page.
Wrapping Up
Last but not least, we need to head on over to Global.asax.cs to setup our Routes and we’ll be done.
Open up Global.asax.cs and replace the default route of:
{controller}/{action}/{id}
with
{linkid}
That’s it!
Fire up the solution and test it out for yourself. Don’t forget to bookmark the location of this post: http://ander.ly/13UVK
Now any requests that come in that match the format http://ander.ly/[linkid] will be sent to our HomeController which will extract the linkid and construct a new bit.ly URL of the same format and do a simple redirect for the user.
With this solution, we can simply use the existing bit.ly URL shortener service without having to roll our own and we can simply replace bit.ly in any shortened URLs with our very own branded abbreviated domain.
Now you too can start branding the links you share.
Let the shameless self-promotion begin!