Mixing NoIndex & Rel=Canonical Tag In One Page

An interesting Google Webmaster Help thread discusses the old and new way of handling duplicate content. In the old days, you either 301 redirected page A to page B, when there was duplicate content. But if that wasn't possible, you instructed the search engine not to index the duplicate page, by adding a noindex tag to the duplicate page. Some people had this automated through their CMS.

With the addition of the new rel=canonical link attribute, things have changed. The new attribute is basically a 301 redirect, without doing a real redirect. It tells the search engine, page B is a duplicate to page A. At the same time, this is hidden from the normal user of your site.

The Google Webmaster Help thread asked, can you use both, the noindex and rel=canonical tag on the same page?

Googler, JohnMu answers the question from Google's perspective:

This is definitely an interesting question :-). Before the rel=canonical link element was announced, using noindex robots meta tags was one way that webmasters were directing us towards canonicals, so this is certainly something we know and understand. However, with the coming of the rel=canonical link element, the optimal way of specifying a canonical is (apart from using a 301 redirect to the preferred URL) is to only use the rel=canonical link element.

One reason for this is that we sometimes find a non-canonical URL first. If this URL has a noindex robots meta tag, we might decide not to index anything until we crawl and index the canonical URL. Without the noindex robots meta tag (with the rel=canonical link element) we can start by indexing that URL and show it to users in search results. As soon as we crawl the canonical URL, we can change to the canonical URL instead. It's also much safer because you don't have to worry about serving different versions of the content depending on the exact URL :-).

Bottom line, don't do it, try to either not have duplicate content, or use a 301 redirect or use the rel=canonical. You can now stay away from using the noindex tag for these purposes.