Several people have in the last few months asked for help with code that parses a URL into a query, like this.

/www.site.com/param/val/param2/val/param3/val

As I understand it this is getting done in the hopes of making URI's nice and pretty for SEO purposes. It's also a great way to lose page rank. Here's why.

First, search engines have no problem parsing query strings. However, query strings aren't seperate pages. Hence

index.php?page=home
index.php?page=news
index.php?page=about

These are all considered the same page by a search engine, so url rewriting to separate them is advised. The problem is overkill like this.

category/tshirts/size/m/color/blue/brand/jacki

In a shopping cart system we can expect to see this sort of thing. The danger is if the parameter order gets switched.

category/tshirts/color/blue/size/m/brand/jacki
category/tshirts/brand/jacki/color/blue/size/m

And so on. Each of these sequences are considered separate pages. When the search engine realizes they are the same page it lowers the ranking of the page for spam.

When using mod rewrite to allow query strings to be set up in this manner, keep in mind that you must choose an order for the parameters and enforce it to avoid the illusion of duplicate pages and being penalized. And don't be afraid to use query strings. Google knows that

category/tshirts.php?color=blue&size=m&brand=jacki
category/tshirts.php?brand=jacki&color=blue&size=m

are the same page, just with different search parameters, and won't penalize you.