6

Please consider a list of items (forum comments, articles, shoes, doesn't matter) which are spread over multiple pages. Different sort orders are supported (by date, by popularity, by price, etc).

So, an URL might look like this (I use the query style here to simplify things):

/items?id=1234&page=42&sort=popularity

/items?id=1234&page=5&sort=date

Now, in terms of SEO, I think I should be worried about duplicate content. After all, each item appears at least as many times as there are sort orders.

I've seen Matt Cutts talking about the rel=canonical link tag, but he also said that the canonical page should have very similar content. But this is not the case here because page #1 in a non-canonical sort order might have completely different items than page #1 in the canonical sort order. For a given non-canonical page, there is no clear canonical page listing all the same items, so I think rel=canonical won't help here.

Then I thought about using the noindex meta tag on all pages with non-canonical sort order, and not using it on all pages with canonical sort order.

However, if I use that method, what will happen with backlinks that are going to non-canonical pages -- will they still spread their page rank juice, even though the first page googlebot (or any other crawler) is going to encounter is marked as "noindex"?

Can you please comment on my problem and what you think is the best solution?

If you think you have a better solution, please consider that 1) I do not want to use Javascript for this, 2) I do not want all the items to be on one page.

Thank you.

2 Answers 2

1

Use a rel="canonical" link tag. It exists for this purpose. It was suggested first by google, but whatwg and w3c are in ways to approve it as spec.

Per your comments on @danlefree answer, your concern maybe related to URL rewriting to user-friendly URLs, ie, you are used to http://www.domain.tld/apples/weight/, instead of using http://www.domain.tld/items.php?id=23&sort=weight.

Well, one way or another will reach the same script, set same application variables and output same content.

Just make sure you have the same (your preferred) URL on all related pages (for example, every same item, regardless sorting order, in my example could be http://www.domain.tld/apples/).

EDIT

Going further on discussion...

First, Matt Cutts is a great guy, I have nothing against his person, but never, NEVER take anything as the holy grail. It maybe a good proposal, but your judgement must be the final word - not any person, despite his/her position and qualification.

Let's get back to your example. Assumptions:

  • You have a products listing page
  • Per default it sorts by ID
  • Users can choose to sort by stock quantity, price or size
  • Each page shows 3 items
  • you currently have 12 different items to be listed.
  • prices and stock quantities can vary along the time

OK, now if user enter you page he will see the lists:

  • Default: 1 2 3 - 4 5 6 - 7 8 9 - 10 11 12
  • By Price: 6 11 1 - 3 4 7 - 2 9 12 - 10 8 3
  • By Stock: 3 2 1 - 6 4 5 - 8 9 7 - 11 12 10
  • By Size: ...

Are you sure you want different sorting pages to be crawled? I mean, unless you change other page contents, like title tag like:

<!-- canonical -->
<title>Joe's Store - Products list</title>
<!-- sorted by price -->
<title>Joe's Store - Products list - cheaper first!</title>

I agree, that sorting can generate a different content, but it should no be crawled and indexed if what changes is only the user sorting preferences. If you are going to provide another title, meta tags and so on, then I think it worth while keep everything as different, otherwise, canonical use is recommended.

Of course, no follow on sorting links also works and very well, but you should not rely just on them.

Let's go to my point:

  • First, think on users
  • Second, make sure your markup is as good as possible (this include, rel="nofollow" on the right bodycopy anchors, link rel="canonical", meta noindex on head)
  • Third, use the tools you have like robots.txt, sitemaps.xml and google webmaster tools

Why all this? Because you should worry first with your users. Then, if your page is well written, and last about crawlers. If your page is really well written, not only users and google will appreciate that, but other search engines and tools.

5
  • (Part 1/3) Thank you for your reply, Dave! However, I disagree with your assessment that I should use the canonical tag for the following two reasons: 1) Google explicitly says (google.com/support/webmasters/bin/…) that the canonical page should be very similar in content to the non-canonical page (minor changes are acceptable). But this is not always the case here; chances are there isn't a canonical page that has the same items. Dec 29, 2010 at 1:10
  • (Part 2/3) To see why, let's reduce this to a three-items-per-page example and assume all items have a unique id. When sorted by ID (canonical): 1 2 3 | 4 5 6 | 7 8 9 | 10 11 12, where | denotes a new page. When sorted by price (non-canonical): 6 11 1 | 5 12 8 | 9 10 3 | 4 2 7. Now, when sorted by price, what would you say should I choose for the canonical page for the first page containing the items 6, 11, and 1? The answer is, there is none. There is no page in the canonical order (sorted by ID) that contains exactly those three items. Dec 29, 2010 at 1:10
  • (Part 3/3) Hence, Google will most likely ignore the rel="canonical" tag (completely different content, see link I gave above). 2) I found an interview with Matt Cutts, where he recommends and condones the "noindex" method for my problem. See: stonetemple.com/articles/interview-matt-cutts.shtml -- but beware, it's a long interview. :-) Dec 29, 2010 at 1:11
  • BTW, sorry guys, but I cannot vote up your replies because I don't have enough reputation. Dec 29, 2010 at 1:14
  • @Iamtotallilost - np about up voting. About your comments, check my edit. Dec 29, 2010 at 17:53
0

Use Google Webmaster Tools to ignore the GET parameter (i.e. "sort") for different sort orders.

I recently encountered this problem with an e-commerce shop in which the "similar items" feature was presented as a hard-coded link from every product page (which created many, many "similar items" pages for each product): telling Google to ignore the "similar items" GET parameter fixed the situation and took the number of "pages" down from 90+ million to a few thousand within several days with appreciable improvements in ranking (and, obviously, crawl rate).

4
  • Thank you for your reply! But as noted I have only used the query part (i.e. the thing after the ?) in my question to better present my problem. I do not use query strings in my real URLs; the item id, page, and sort order are encoded in the abs_path element of the URL (i.e. the thing before the ?). As the link you provided pointed out "This new option only helps with canonicalization issues that are caused by optional parameters that are in a standard key-value pair format and that you specify." So I don't think it will help in my case and I'd prefer a standard, non-Google-specific solution. Dec 27, 2010 at 21:11
  • Is there any way you can switch back to encoding the sort order as a GET variable? It's a much better way of approaching the problem in terms of maintaining a 1:1 URI:content ratio - if it's not an option, the canonical attribute will have to do for extraneous sort orders.
    – danlefree
    Dec 27, 2010 at 21:21
  • I could switch back to using GET variables, but I don't really want to. My current URL structure is really neat, short, and descriptive, so I'd hate to change it just to use the Google tool you mentioned. What do you think about my proposed noindex-solution? Dec 27, 2010 at 22:14
  • Canonical is a better solution unless you can confirm (Google Analytics, Google Webmaster Tools) that your sort order URI's are not entrance pages (in which case they're linked somewhere) or reported under your Webmaster Tools > Your site on the web > Links to your site
    – danlefree
    Dec 27, 2010 at 22:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.