I wanted to say something about faceted navigation, as it is a topic that I touched on a few years ago, but which is still widely misunderstood.
Imagine that I sell a left-handed rotating widget, catalogue number 24981.
Take for granted that it will be listed in the Gadgets category, the Widgets category, and the New Products listings.
On a vast number of sites, that product will have the following URLs:
There is no need to do this. That's a duplicate content nightmare.
The content page needs a single URL:
The URL does not need to record the category hierarchy path the user took to get to that page.
On the content page, breadcrumb navigation can show the 'route'
Home > Gadgets > Left-Handed > Product 24981 that this particular visitor took to get to that page (tracked using cookies or database entries to reconstruct the breadcrumb links).
The content page can also show links to the category index pages for "find more gadgets", "find more widgets", and "find more new products" as applicable.
This stuff can be pulled from the database using a product table showing which products belong in which categories, it does not need to be reflected into the URL or the URL structure.
For sites that also check the product-name part of the URL matches the record number, there's other advantages.
That is, for the product at
www.example.com/24981-left-handed-widget if a user requests
www.example.com/24981-left-handed-widgets-are-great-buy-one-now the site should issue a 301 redirect to the correct URL for that product. Having got that functionality in place you can then deliberately post links like
example.com/24981 to Twitter and other places that need 'short' URLs (Yes, I know the shortening rules have recently changed on Twitter) knowing that your site will redirect the user to the correct place, without having to rely on a third-party site for URL-shortening services. With an extra few lines of database wizardry you can then also track incoming traffic for those 'short' URLs.