views:

356

answers:

8

I'm designing a hosted software-as-a-service application that's like a highly specialized version of 37Signal's Highrise product. In that context, where SEO is a non-issue, is it worth implementing "pretty URLs" instead of going with numeric IDs (e.g. customers/john-smith instead of customers/1234)? I notice that a lot of web applications don't bother with them unless they provide a real value (e.g. e-commerce apps, blogs - things that need SEO to be found via search engines)

+20  A: 

Depends on how often URLs are transmitted verbally by its users. People tend to find it relatively difficult to pronounce something like

http://www.domain.com/?id=4535&f=234&r=s%39fu__

and like

http://www.domain.com/john-doe

much better ;)

Martin Hohenberg
A: 

It's probably not worth it even if you do care about SEO.

Azeem.Butt
Google don't seem to agree with you: see their SEO Guide (PDF) linked from http://googlewebmastercentral.blogspot.com/2008/11/googles-seo-starter-guide.html, and this *Webmaster Help* document: http://www.google.com/support/webmasters/bin/answer.py?answer=76329
NickFitz
+8  A: 

In addition to readability, another thing to keep in mind is that by exposing an auto-incrementing numeric key you also allow someone to guess the URLs for other resources and could give away certain details about your data. For instance, if someone signs up for your app and sees that their account is at /customer/12, it may effect their confidence in your application knowing that you only have 11 other customers. This wouldn't be an issue if they had a url of /customer/some-company.

ry
Non-pretty URLs aren't really any less obvious.
Joe Philllips
d03boy - Could you rephrase that without the triple-negative? Pretty URL's are the same or more obvious? I think you broke my English parser, because it sounds like you're saying it's just as easy to guess a valid company name as it is to add one to the number twelve.
Joel Mueller
If you are going to use IDs, GUIDs are a bit harder to guess, if that is an issue.Even so, that isn't necessarily more secure.
Andrew Shelansky
+1  A: 

When I create applications I try my best to hide its structure from prying eyes - while it's subjective on how much "SEO" you get out of it - Pretty URLs tend to help people navigate and understand where they are while protecting your code from possible injections.

I notice you're using Rails app - so you probably wouldn't have a huge query string like in ASP, PHP, or those other languages - but in my opinion the added cleanliness and overall appearance is a plus for customer interaction. When sharing links it's nicer for customers to be able to copy the url: customer/john_doe than have to hunt for a "link me" or a random /customer/

Marco

Marco Ceppi
+7  A: 

It's always worth it if you just have the time to do it right.

  • Friendly-urls look a lot nicer and they give a better idea where the link will lead. This is useful if the link is shared eg. via instant message.
  • If you're searching for a specific page from browser history, human readable url helps.
  • Friendly url is a lot easier to remember (useful in some cases).
  • Like said earlier, it is also a lot easier to communicate verbally (needed more often than you'd think).
  • It hides unnecessary technical details from the user. In one case where user id was visible in the url, several users asked why their user id is higher than total amount of users. No damage done, but why have a confused user if you can avoid it.
Carlos
I'll add to this : easy to guess and easy to type
Mike
+2  A: 

I sure am a lot more likely to click on a link when I mouseover it, and it has http://www.blah.com/something-i-am-interested-in.html.

Rather than seeing http://www.blah.com/23847ozjo8uflidsa.asp.

It's quite annoying clicking links on MSDN because I never know what to expect I will get.

whatsisname
A: 

I typically go with a combination -- keeping the ease of using Rails RESTful routing while still providing some extended information in URLs.

My app URLs look something like this: http://example.com/discussions/123-is-it-worth-using-pretty-urls/ http://example.com/discussions/123-is-it-worth-using-pretty-urls/comments http://example.com/discussions/123-is-it-worth-using-pretty-urls/comments/34567

You don't have to add ANY custom routes to pull this off, you just need to add the following method to your model:

def to_param
  [ id, permalink ].join("-")
end

And ensure any find calling params[:id] in your controller is converted to an integer by setting params[:id].to_i.

Just a note, you'll need to set a permalink attribute when your record is saved...

bensie
A: 

If your application is restful, the URLs that rails gives you are SEO-friendly by default.

In your example, customers/1234 will probably return something like

<h1>Customer</h1>
<p><strong>Name:</strong> John Smith</p>
etc etc

Any current SEO spider will be smart enough to parse the destination page and extract that "John Smith" from there anyway.

So, in that sense, customers/1234 is already a "nice" URL (as opposed to other systems, in which you would have something like resource/123123/1234 for customer 1234 resource/23232/321 for client 321).

Now, if you want your users to be regularly using urls (like in delicious, etc) you might want to start using logins and readable fields instead of ids.

But for SEO, ids are just fine.

egarcia