About the Author

Chris Shiflett

Hi, I'm Chris, a web developer and a founding member of Analog. I live and work in Brooklyn, NY.


URLs Can Be Beautiful

OmniTI Web Site

We launched a new web site for OmniTI on Monday, complete with a new identity designed by Jon Tan. As with most projects of this nature, this was all done in our spare time, but we're proud of the results and hope it represents who we are and what we do with a bit of our personality showing through.

If you spend some time on our site, its true beauty might begin to show; every detail has been designed with great care.

A few colleagues and friends have recognized the unique information architecture, particularly the URLs, which makes me very happy. I've mentioned URL vanity in the past, but the URLs we use on the new web site involve a level of rigor that goes beyond what I've done before. Instead of thinking purely in hierarchies, I wanted to also make the URLs powerful statements that stand on their own. The result is that we have URLs like this:

omniti.com/is/hiring

Each major category in the hierarchy is a verb (present tense), and although this is admittedly a little over the top for the most web sites, it can help you refine your information architecture to be more exact. For example, any page that can't be made to elegantly complete a sentence beginning with "OmniTI is" probably belongs somewhere other than the about section of the web site.

This might also be an aid if we begin to do more advertising, because our URLs have a voice of their own:

omniti.com/helps/national-geographic

Our URLs are just a subtle touch, and they're not explicitly called out in any way. For example, links to /is, /does, and /thinks are labeled about, work, and planet, respectively. If other sites can get away with ugly URLs, surely we can get away with having some fun.

As is the case with fashion shows, the point of something like this isn't to suggest that it's a practical style for everyday use. Rather, we hope to make room for more creativity and highlight the beauty of paying attention to details.

Thanks to everyone who noticed. :-)

About This Post

URLs Can Be Beautiful was posted on Thu, 13 Mar 2008 at 22:19:34 GMT.

25 Comments

1. Ron's GravatarRon said:

you're new website looks great.

it's a bit buggy on opera...

Thu, 13 Mar 2008 at 23:59:56 GMT Link


2. Tobias's GravatarTobias said:

Absolute great idea. I really love it. Will the world be allowed to copy your revolution when it is ready (in about 5 years ;o)?

I don't like the date inside URLs, and I realized that you did not add the month to the URL in the blog (of OmniIT). Do you have any reason for that? How did you solve the issue of unique identifiers?

I've only one thing to argue against: /shares/news has just the feed. So news can be found at two complete different resources, and the one you are using is the feed only. No way to get a HTML file just with the knowledge of the feed URL.

From my point, I like to have the same resource in multiple formats, and a feed is just a different resource. Why not using /remembers.atom as feed and /remembers as HTML list (which currently does not exists, might be nice...)?

...and yes, I'm suffering from URL vanity!

Fri, 14 Mar 2008 at 02:46:34 GMT Link


3. Brian Moon's GravatarBrian Moon said:

I have always been a big fan of nice URLs too Chris. But, I have not taken it to that extreme...... yet. But you are giving me ideas. =)

Fri, 14 Mar 2008 at 02:59:37 GMT Link


4. Chris Shiflett's GravatarChris Shiflett said:

Thanks for the kind words, Ron. Can you elaborate on what you consider to be Opera bugs? We have some pending changes that will improve the anti-aliasing in Opera, but I'm wondering if you've noticed a bigger issue. If so, I'd really like to fix it. :-)

Tobias, glad you like the URLs. :-) Regarding blogs, the way we chose to handle that is a little bit different. Instead of asking our staff to blog for the company, we instead aggregate each person's individual blog. (We actually moderate this, so only relevant posts are aggregated.) For ordinary blog posts, we only display abstracts, and we link to the full post on the author's blog, located elsewhere. For official OmniTI news, which is close to a corporate blog, we have to take care not to say the same thing twice in the same year. News posts are available via the planet, but the URLs make a subtle reference to the archives, which don't yet exist as they will in practice. Ultimately, we'll have pages like /remembers/2008 to list all of the things we think are relevant to the company for 2008. ("OmniTI remembers 2008.")

Brian, glad to know I'm giving you ideas. :-) If you come up with any creative approaches of your own, please share!

Fri, 14 Mar 2008 at 04:43:16 GMT Link


5. Meraj Khattak's GravatarMeraj Khattak said:

I really loved the way you created your URLs. It certainly has opened a new canvas for me to think ... :)

Fri, 14 Mar 2008 at 06:20:50 GMT Link


6. Internet TV's GravatarInternet TV said:

That's almost as cool as the whole tld's as words, like del.icio.us or whos.amung.us.

Fri, 14 Mar 2008 at 09:26:56 GMT Link


7. Joseph Crawford's GravatarJoseph Crawford said:

Chris,

The new site looks great, very functional. I love the URL's that is really unique at this point in time but I think everyone will start doing it now that you have lol.

Makes me wish I lived in NY or MD I'd come to work for OmniIT :)

Fri, 14 Mar 2008 at 12:37:22 GMT Link


8. Edward Kay's GravatarEdward Kay said:

What a novel idea! I think this is great for the examples you mention above.

I'd caution about using it everywhere though, when other options may be more usable. I frequently look at the URLs used and use the drop-down in the address bar to find previous pages I want to revisit.

To me, omniti.com/has/* URLs aren't so good. I'd prefer:

/sitemap to /has

/legal to /has/legal

Fri, 14 Mar 2008 at 12:41:57 GMT Link


9. Geoff's GravatarGeoff said:

it looks great. well done.

I've been getting more into seo lately and I didn't see a robots.txt file with a sitemap reference. you're really doing yourself (and your business) a disservice if you aren't using the sitemap protocol :)

Fri, 14 Mar 2008 at 13:10:52 GMT Link


10. Asanka Dewagw's GravatarAsanka Dewagw said:

The idea is beautiful and original I must say.. I'll keep that in mind.. probably even use it soon.. I hope you don't mind!

Jon has done a great job with the design. The typography does all the hard work for the site. Brilliant!

Sat, 15 Mar 2008 at 00:47:53 GMT Link


11. Chris Shiflett's GravatarChris Shiflett said:

Geoff, you're right about using the Sitemap protocol. We just needed a few days to catch our breath. :-)

Asanka, I don't mind at all. :-) I'd love it if more people paid attention to details like URLs.

Sat, 15 Mar 2008 at 05:10:41 GMT Link


12. Gap's GravatarGap said:

Hi.

I like the url idea, and really enjoy the website design(OmniIT). I read most of that books, I wish to thanks you guys, that books really helped me to become a better professional on programming and web-tecnologies.

My best regards.

Sat, 15 Mar 2008 at 12:39:11 GMT Link


13. Chris Shiflett's GravatarChris Shiflett said:

Thanks very much, Gap. :-)

Mon, 17 Mar 2008 at 19:20:33 GMT Link


14. Scott Martin's GravatarScott Martin said:

Keep up the great work. You never cease to keep me thinking.

Tue, 18 Mar 2008 at 02:56:44 GMT Link


15. Chris Shiflett's GravatarChris Shiflett said:

Thanks a lot, Scott, and thanks for using your OpenID. :-)

Tue, 18 Mar 2008 at 03:01:41 GMT Link


16. Gap's GravatarGap said:

Hi Chris.

I have a question, may sound a "dumb" question, but i have to ask you: how do you make this URLs? I mean, are you using the Apache's mod_rewrite or just directories, like '/is', '/does', '/thinks'?

my regards

Wed, 19 Mar 2008 at 23:30:27 GMT Link


17. Chris Shiflett's GravatarChris Shiflett said:

Gap, I use a framework to handle that part, but you can also use ForceType:

http://httpd.apache.org/docs/mod/mo....html#forcetype

This lets you name a PHP file is instead of is.php, and you can access the full path info in PHP via $_SERVER['PATH_INFO'] or use the request URL via $_SERVER['REQUEST_URI'].

It would probably take a blog post to fully explain this technique, but hopefully that gets you started. All frameworks support this pretty conveniently, so that might be a better option.

Thu, 20 Mar 2008 at 01:03:14 GMT Link


18. Gap's GravatarGap said:

Hi.

Thanks a lot.

Thu, 20 Mar 2008 at 11:57:22 GMT Link


19. Andrew Woods's GravatarAndrew Woods said:

Nice work on the site. The url structure is creative yet so simple. It is refreshing to see the extra effort made. I'm learning about this myself. It's more challenging than one would think.

I like the Real Genius dialog excerpt on Expressing our Inner Geek page. It's, well ... genius.

Fri, 21 Mar 2008 at 06:19:08 GMT Link


20. Joakim Nygard's GravatarJoakim Nygard said:

Hi Chris,

What a wonderful idea! I love how a url is a sentence. Though not appropriate on all sites, it really takes pretty urls to the next level in terms of being even easier to remember - "what was that url again for the job posting...ah yes, they are hiring!" maps elegantly to /is/hiring.

Fri, 21 Mar 2008 at 12:39:02 GMT Link


21. Chris Shiflett's GravatarChris Shiflett said:

Thanks, Andrew, and happy to see you're a Real Genius fan. :-) You're right that it took a lot of effort, but hopefully that's not too apparent. Information architecture is one of those disciplines where doing a good job should result in a finished product that seems simple and obvious.

Joakim, I agree it's not appropriate for all sites, and to be honest, it's not a very scalable idea in general. I do like that the sentences are easy to remember; that was one of the design goals. :-)

Fri, 21 Mar 2008 at 15:10:07 GMT Link


22. Geoffrey's GravatarGeoffrey said:

Too bad ominiti does not /has/cheezburger ;)

Mon, 31 Mar 2008 at 12:33:48 GMT Link


23. Gabriel Reguly's GravatarGabriel Reguly said:

Hi Chris,

Congratulations for this clever technique and its successful implementation, can't wait to do it myself.

As a side comment, if you are familiar with a guy named jon, and I read somewhere that you might be... ;-)

At his blog, I quite enjoyed the javascript link to insert the right answer.

Best Regards

Wed, 09 Apr 2008 at 01:43:28 GMT Link


24. Chris Shiflett's GravatarChris Shiflett said:

Thanks much, Gabriel. If you do something similar yourself, I'd love to hear about it.

Regarding the JavaScript on Jon's site, I think that was actually written by another Jon. I'm a big fan of both. :-)

Thanks again!

Thu, 10 Apr 2008 at 05:01:17 GMT Link


25. Nick's GravatarNick said:

Chris, I noticed in the comments you mentioned using a framework for the OmniTI project. I'm curious what framework you used? Is it just an in-house kinda thing or a publically available framework?

Sat, 19 Apr 2008 at 03:46:54 GMT Link


Post A Comment

Personal Details and Comment

Style Guide

Line breaks are converted to paragraphs. Also use:

  • <a href="" title="">text</a>1
  • <em>text</em>
  • <blockquote><p>text</p></blockquote>
  • <code>2  <?php  if ($foo) {      $foo = TRUE;  }  ?></code>
  1. Note: <code> can be used inline (e.g. in paragraphs) or in a block as shown. Include whitespace and newlines in blocks.

Please enter Chris (my first name) below. This is a primitive spam prevention technique, and I apologize for the inconvenience.

Preview and Submit

Upcoming Talks

ConFoo

10 - 12 Mar 2010

At Hilton Montréal Bonaventure, Montréal, Canada.

South by Southwest

12 - 16 Mar 2010

At Austin Convention Center, Austin, Texas.

Dutch PHP Conference

10 - 12 Jun 2010

At TBD, Amsterdam, Netherlands.

O'Reilly Open Source Convention

19 - 23 Jul 2010

At Oregon Convention Center, Portland, Oregon.

New Comments

liukang wrote:

I have problem with this example. In my php.ini magic_quotes_gpc is off so i'm using only addsla...

Posted in addslashes() Versus mysql_real_escape_string()
RyanTheGreat wrote:

Well, I'm not Chris, but I will do my best to address the questions raised in the comments by Ian...

Posted in Security Corner: Cross-Site Request Forgeries
Chris Shiflett wrote:

Thanks for the kind words, Simon. I'm glad you liked the tutorial. In case it's helpful, here'...

Posted in Webstock
Chris Shiflett wrote:

Hi Robin, I plan to post something about it, but it's going to be hard to express everything i...

Posted in Webstock
Simon Mahony wrote:

Hi Chris, I really enjoyed your workshop on the Evolution of Security at Webstock. I think I g...

Posted in Webstock

Browse Comments


Work and Books

Analog Essential PHP Security HTTP Developer's Handbook