Few days ago "canonical link" has become a hot keyword due to the recent announcement from Google, Yahoo and Microsoft on the solution on the "duplicate content penalty". You may find more advanced explanation on duplicate content penalty in this Demystifying the "duplicate content penalty" post.
If you dig more on this topic, you may found that canonical url issue has been discuss over and over again and you can trace back to some articles back from year 2006. (Deftly dealing with duplicate content and Google Canonical URL Issues and 301 Redirects). The long waited solution is actually simple, all you need to do is add rel="canonical" in the page header:
2: <link rel="canonical" href=http://www.example.com/product.aspx?item=Big />
Here’s a very important note where most of the people confuse and got it wrong: You need to add the link tag in all duplicated page/url and the page you want Google to emphasize on! (Most of the people thought they only need to add <_link rel="canonical"… in the page you want.). Maybe the word canonical really confusing…
Here’s an example:
The second url basically is a query string url which change the item size to BIG but all other product information is very close to the productA.html.
Thus, you need to add <link rel="canonical" href="http://www.example.com/product.php?item=swedish-fish" /> to productA-BIG.html but not productA.html.
However, sometimes the url is a query string url which in fact that you actually don’t have the page but being virtually called out based on user’s (robot) request. For example, inside productA,php has 3 options (Small, Big, Custom) and when visitor click on the BIG option, the website will send a query to the server and generate a dynamic query url that looks like: productA?item=BIG which the content is pretty much the same but the photo and size describe in the content.
So you just can’t add the <link> tag into a virtual page right? So in this case, you use need to add it in the productA.php which whenever query based generated url from productA.php will have the tag inside.
To emphasize again, you need to put your preferred page to be indexed’s url inside the <link rel="canonical"> tag and put the tag between every pages’ HEAD section (<head></head>) that you think is duplicated.
If you still blur blur, try view the source code of this page provided by wikia.com as recommended by Google. You’ll notice that the source code on the URL http://starwars.wikia.com/wiki/Nelvana_Limited specifies its rel="canonical" as:http://starwars.wikia.com/wiki/Nelvana. (i.e. index Nelvana but not Nelvana_Limited)
Make sure you read this Specify your canonical post in Official Google Webmaster blog and Yahoo’s Canonical blog post, or Microsoft’s canonical blog post.. for further researches and understanding. Another great news is that Canonical Link Tag is adopted by any search engine when crawling and indexing your site.
Question: So should really give it a damn?
If you have a blog like BlogSpot and wordpress, you actually no need to care about this unless your theme is kinda tricky for the search engine to know which one is the permanent article url link. Anyway, Joost made a canonical plug-in for WordPress, a plugin for e-commerce software package Magento, and also a plug-in for Drupal. For me, I think the wordpress plugin is totally useless after I installed in this blog. (I’ll uninstall it soon).
However, if you have a website that has a lot of dynamic query based url or simply just have many duplicate content that can’t be avoided, rel=”canonical” this your savor.
Question: Wait! My blog in BlogSpot.com and wordpress has duplicate content because my blog first page show the same content in the one in permanent link??!
No you don’t. because almost all blog platform publish post with a permanent link (Your article real location), modern search engines will follow index the permanent link and because the main page normally shows more than one article, which already made the page different from the others.