Short URLs

Fabien Potencier

Mar 6, 2009

Websites like Twitter makes URL shortener services a must. Basically, they convert long URLs to shorter ones by assigning a mostly unique hash:

The tinyurl.com service for example converts this URL http://www.symfony-project.org/blog/2009/02/18/dailymotion-powered-by-symfony to this shorter one http://tinyurl.com/css7s5.

My main concern with URL shortening is that you loose all the meaning embedded in the URLs. What does css7s5 refers to? Nothing. It is just a hash of the original URL. It is also very difficult to remember a short URL.

I wanted a shortener URL service that gives short URLs, but also keep some sort of meaningful information about the original URL. The solution was to implement my own little URL shortener service, specialized for my needs.

The first thing I did was to register a short domain name: sf-to.org (sf meaning symfony here).

Then, I simply configured rewriting rules for the short URLs I wanted to have:

<VirtualHost *:80>
  ServerName sf-to.org

  RewriteEngine On
  RedirectMatch permanent /bookmarks   http://www.symfony-project.org/blog/2006/10/28/yahoo-bookmarks-uses-symfony
  RedirectMatch permanent /answers     http://www.symfony-project.org/blog/2008/05/08/yahoo-answers-powered-by-symfony
  RedirectMatch permanent /delicious   http://www.symfony-project.org/blog/2007/10/02/delicious-preview-built-with-symfony
  RedirectMatch permanent /dailymotion http://www.symfony-project.org/blog/2009/02/18/dailymotion-powered-by-symfony

  # ...
</VirtualHost>

The short URL for the above example is now: http://sf-to.org/dailymotion.

Of course, if I start needing more short URLs, I will probably write a small PHP script. But for now, it gets the job done.