There is a lot of coverage of this topic across the search engine optimisation blogging and forum world, and I mean a lot
It is with this in mind that I intend to write this foolproof guide to the key differences between the 301 redirect and the canonical tag (the meta directive and not canonicalization in general). There’s also going to be some help from the friendly GoogleBot along the way to help you understand through the medium of Microsoft Paint. Let’s start with a brief description of each tag.
What is a 301 redirect?
A 301 redirect is a command that redirects users and the search engines to a particular page. A 301 redirect can be employed if the content of a page has been permanently moved or if you have created multiple versions of a homepage and only want the users and search engines to see one version.
What is a canonical tag?
The canonical tag is a meta tag placed in the HTML header of a webpage. The tag, however, is not a redirect, so the users and search engines are not sent to another location, but a particular page is nominated for indexation with the search engines.
Its main purpose is to keep duplicated content out of the search engine index while consolidating a sites authority and PageRank into one URL.
In what circumstances would you need a 301 redirect or a canonical tag?
There are several situations in which the best solution would be to use either a 301 redirect or a canonical tag. One situation in which both options appear to be a viable option is if there are multiple versions of a homepage. This is the fix that GoogleBot finds himself in below. But more time will be dedicated to this particular issue later in the blog.
A 301 redirect is also the ideal command used if page content has been moved from one location to another because the search engines and the users will be sent to the new location. This is ideal if you are moving your site from one domain to another. The canonical tag is more suited to occasions where you would only want the search engines to index one URL address, but still allow users access to variations of the address.
Now, let’s go into a bit more detail…
In the picture below, the webmaster or whoever is in charge of the site has created a solution to the problem GoogleBot was faced with in the first diagram. The problem arose because numerous versions of the homepage had been created. This can occur for a multitude reasons and is sometimes unavoidable.
However, with the addition of a 301 redirect (for example, a simple redirect on an Apache server will have the following code in the .htaccess file: redirect 301 /old-page.html /new-page.html), both the users and the search engines are taken to the correct version of the webpage. This removes the possibility of the search engines interpreting several different URLs as having duplicate content. The 301 redirect also allows you to more accurately monitor traffic to your homepage as everyone will be taken to one single URL address.
Another reason why you would use a 301 redirect is if you are moving your site from one domain to another. This way, instead of having to rebuild all your links, you can just redirect them to the new address and retain the benefit. When it is being used for this purpose, there is a particular pitfall that you should be aware of. Do not redirect all links to a single URL – there can be a temptation to send them all to the homepage with the intention of giving it a ranking boost. However, this technique will not have as much benefit as redirecting each individual page to a relevant page on a new URL.
Another possibility for the use of a 301 redirect is to direct the users and search engines away from expired content on your site. Users should be directed away from old terms and conditions and new stories to the updated version using a 301 redirect to maintain order.
This circumstance would arise when the webmaster wants the search engines to see only one version of a URL, but still allow the user to see multiple versions of a page. For example, if a person building a website created a printer-friendly version of a website as well as a ‘full’ version. To the search engines this could look as if there were duplicated versions of the homepage and could result in the printer-friendly version ranking higher than the ‘full’ version. The implementation of the canonical tag cancels this out by pointing the search engine to index the ‘full’ version, therefore removing the possibility that any secondary versions of a webpage could rank higher than the designated homepage.
Similar to the use of the 301 redirect, the canonical tag comes with a warning. If it is applied across an entire site, and all nominate the homepage for canonicalisation, this will be harshly penalised by the search engines
A similar problem can occur when you have two pages containing the same products, but on one page they are listed by size, and on the other they are listed by colour. This will create two different URLs to display very similar content, and risks being seen by the search engines as duplicate content. Again, this is a perfect scenario to use the canonical tag because one page can be nominated for indexing, while the users will still have access to both pages based on their specific needs.
There may be circumstances where a 301 redirect is not a practical option. This could occur for several reasons, it could be because a particular content management system won’t allow it, or a programmer might not know how to code it. In this case the rel=”canonical” tag is a better option because of its simplicity. Changing the tag on a page is an extremely straightforward way to implement a very useful tool.
Similar to the use of the 301 redirect, the canonical tag comes with a warning. If it is applied across an entire site, and all nominate the homepage for canonicalisation, this will be harshly penalised by the search engines.
A test performed over at Moz revealed that this can cause large chunks of your website to be de-indexed.
Essentially, both commands are navigation tools. A 301 redirect is for the users and the search engines, whereas the canonical tag is for instructing the search engines. Despite not appearing to be vastly different, they both serve very unique purposes. Caution must always be employed when using one of these commands as incorrect implementation could potentially be disastrous for a website.