Avoiding Duplicate Content in E-Commerce Product Search/Sorting Results
-
How do you handle sorting on ecommerce sites? Does it look something like this?
For Example:
- example.com/inventory.php
- example.com/inventory.php?category=used
- example.com/inventory.php?category=used&price=high
- example.com/inventory.php?category=used&location=seattle
If not, how would you handle this? If so, would you just include a no-index tag on all sorted pages to avoid duplicate content issues?
Also, how does pagination play into this? Would it be something like this?
For Example:
- example.com/inventory.php?category=used&price=high__
- example.com/inventory.php?category=used&price=high&page=2
- example.com/inventory.php?category=used&price=high&page=3
If not, how would you handle this? If so, would you still include a no-index tag?
Would you include a rel=next/prev tag on these pages in addition to or instead of the no-index tag?
I hope this makes sense. Let me know if you need me to clarify any of this. Thanks in advance for your help!
-
Regarding pagination - urls look fine and you should use rel=prev/rel=next instead of the no-index tag.
Regarding sorting - Google have a handy little sheet about this which you may or may not have seen that covers this kind of issue
-
I would use rel="canonical" to example.com/inventory.php
on
- example.com/inventory.php?category=used
- example.com/inventory.php?category=used&price=high
- example.com/inventory.php?category=used&location=seattle
This should cover you for pagination : http://googlewebmastercentral.blogspot.com.au/2011/09/pagination-with-relnext-and-relprev.html
-
On my Ecommerce i've just added it in robots.txt
You should be able to do something similar. Below is what I have but I use x-Cart as my ecommerce site.
User-agent: *
Disallow: /printable=Y
Disallow: /js=
Disallow: /sort=
Disallow: /sort_direction=
Disallow: /product.php
Disallow: /home.php?cat=*
Disallow: /catalog/
Disallow: /search.php
Disallow: /cart.php
Disallow: /help.php
Disallow: /giftcert.php
Disallow: /product.php
Disallow: /orders.php
Disallow: /register.php
Disallow: /icon.php
Disallow: /image.php
Disallow: /error_message.php
Disallow: /offers.php
Disallow: /product_image.php
Sitemap: http://www.domainurlhere.co.uk/sitemap.xml -
Unfortunately, it does get tricky in those multi-parameter situations. Googe has suggested that you NOT use canonical to solve pagination issues, unless you canonical to a "View All", and that has some restrictions. So, don't use canonical if it covers "page=2", etc.
Adam Audette has a great post on the subject, but it is complex (he just didn't an updated talk at SMX, but I don't have that link offhand yet):
http://searchengineland.com/five-step-strategy-for-solving-seo-pagination-problems-95494
Basically, you can use canonical and rel=prev/next together:
(1) The canonical tag would point to "?category=used&page=2"
(2) Rel=prev/next should include the "price=high" parameter, and other parameters.
Unfortunately, this makes for tricky code. See the end of this post:
http://googlewebmastercentral.blogspot.com/2011/09/pagination-with-relnext-and-relprev.html
I'm not thrilled with Google's solution, but it does seem to be working. Bing only partially supports rel=prev/next, to complicate matters.
The other option is to use Google Webmaster Tools (and Bing Webmaster Central) parameter handling to inform them of the functions of "price=" and "page=". If you're just trying to prevent problems, that's viable (i.e. you don't have any current issues).
You can also NOINDEX the variants - Google says they don't recommend it anymore, but I still find it does work in some cases. I just wouldn't combine NOINDEX with rel=prev/next/canonical - you can end up with a mess.
-
Thanks everyone, for the feedback!
Dr. Pete, as always, you are a tremendous help!! I look forward to reporting back any findings I come up with during implementation.
Thanks again!
-Alex