Most notably with upgrades to Twitter and Gawker, the use of “#!”, or hashbang, in a website’s URL has come to the forefront of emerging front-end development trends. The feedback, even from those who consider themselves on the cutting edge, often lands on the negative side of the argument. It’s been urged by many in the industry that the hashbang breaks the basic assumption of how a URL functions.
Take, for example, the following URL for my twitter feed: http://twitter.com/#!/markdalgleish
Because of this architecture, any bot, crawler or parser that attempts to read from http://twitter.com/#!/markdalgleish will not see my tweets. It will, in fact, receive code and markup for an application with no data.
Luckily, there is a bright side.
Twitter is actually adhering to a URL standard supported by Google. When the Google crawler sees the URL to my Twitter feed and detects the hashbang, it instead makes a request for: http://twitter.com/?escaped_fragment=/markdalgleish. If you click this, you’ll see that is a valid link .
Google’s web crawler will, assuming you follow their ’escaped_fragment’ querystring format, successfully traverse your site and index your pages correctly. However, any crawler that hasn’t been updated to support the hasbang URL standard will fail to navigate standards-based, AJAX-reliant sites.
So where do I stand on this issue?
Over the past decade, web “sites” have quickly turned into web “apps” and the concept of a site being a series of pages is no longer appropriate for many of the most popular sites on the internet. As long as Google’s AJAX-crawlable URL standard is followed correctly, I feel that the hashbang URL format is a major breakthrough that allows sites to finally embrace the benefits of AJAX to their full extent. No longer will we need to re-download core parts of a site’s user interface every time we click a link, watching the site disappear only to reappear seconds later.