Over the past few years I’ve worked on lots of Magento websites and have worked with a wide range of retailers, ranging from small startups to large enterprise-level ecommerce businesses. During this time I’ve faced pretty much every technical SEO issue imaginable, lots of which are very common with the Magento platform
Magento can be a complete nightmare from an SEO perspective if you don’t know what you’re doing, which is why I’ve written this guide to help with the less obvious technical issues.
Layered / faceted navigation issues
It is very common for layered or faceted navigation to cause duplicate content issues with Magento, as filters that append query string parameters create duplicate variations of pages.
One of the biggest mistakes I see retailers make in ecommerce SEO is simply change the dynamic convention that the URLs and meta titles are based on – so effectively making the URL look clean and making the title tag slightly more targeted. This is not a good idea as it leaves a website susceptible to Google Panda, which specifically targeted websites with large amounts of pages with very little unique content, amongst other things.
Using AJAX navigation will enable you to filter the products featured on your website but without appending anything to or changing the URL, leaving only the original category page. If you don’t have an experienced Magento developer on-hand, this is likely to be a bit of a nightmare. There are modules that can help with this, but to be honest if you don’t have a decent developer to help, I would just avoid making this switch.
Prevent search engines from accessing the pages
Most of the time, when I’ve dealt with websites that have faced this issue I’ve opted to apply meta robots rules to tell search engines not to index the pages. You can use either meta robots tags or x robots tags to do this, they will both meet the requirements for removal requests in Google Webmaster Tools and ultimately serve the same purpose.
I would recommend using the noindex, follow tag, as this tells search engines not to index the page but continue crawling the website.
If you’re launching a new website, this will help prevent these pages from being indexed and if you have lots of these pages in the index, this will help you to either remove them (in GWT) or tell search engines to stop indexing the pages (although this takes time).
This can be achieved by using the MageSEO plugin (which I helped to build), which allows you to assign manual meta robots rules, gives you greater control over the canonical tag and also allows you to edit the robots.txt file from the Magento back-end. You can find out more here.
Use the canonical tag
Although the canonical tag was introduced to prevent issues like this, it doesn’t always work as well as the other solutions. I’ve tried using the canonical tag on many occasions, but often Google overlooks the tags and starts indexing the pages anyway.
This said, the canonical tag has got better than it was and I’ve used it successfully with web analytics tracking parameters and it’s not caused any issues.
I would recommend using the canonical tag even if you’re using other solutions.
Parameter handling in Google Webmaster Tools
I’ve always suggested that the parameter handling resource in Google Webmaster Tools doesn’t really work, especially with faceted navigation duplicate content issues – however, I’ve heard lots of very good SEOs saying it’s got a lot better.
Like the canonical tag, I’d recommend implementing this even if you’re using other solutions.
I also wrote this comparative guide to all SEO options for dealing with faceted navigation in Magento.
Catalogue search pages
Another very annoying issue with Magento is when catalogue search pages get indexed by Google, as generally there will be thousands. In order to prevent this, I would simply recommend disallowing the /catalogsearch/ directory within the robots.txt file.
If you didn’t want to use the robots.txt file, you could use meta robots or x robots rules, which will provide the same solution.
It’s really common for secure pages to be indexed by Google, which can be very annoying from a duplicate content perspective. For these pages, I would recommend adding a separate robots.txt file for https pages, although it’s fundamental that you ensure that this file isn’t pushed onto the http pages. You can either disallow your selected pages or choose to disallow all pages, but it’s key that the changes aren’t reflected on http pages.
You can also use the canonical tag to point to the preferred version, be it the http or https version of the page. This will resolve the issue and can be achieved by using a plugin that I’m releasing soon.
Duplicate product page content because of hierarchical URLs
If you’re using hierarchical URLs, which will include the category name name within the product page URL path, you’re setting yourself up to have duplicate variations of a product within multiple categories. For this reason, I would strongly recommend using top-level product URLs, as this will prevent issues like this and allow you to have one single representative version of a product.
If you’re already using category paths within your product URLs, make sure you’re using the canonical tag to point to the primary version of each product – this will also resolve the issue, although top-level products would be the best option.
Also, if you’re switching to top-level products, make sure you get your developer to create a rewrite rule to redirect old product URLs, as by default, Magento will not redirect them.
Issues with URL rewriting
Another surprisingly common issue with Magento is the rewriting, which can cause either category page URLs to revert back to the original /catalog/ URLs, which do not write them based on the title of the page or for these URLs to run in parallel.
I would recommend blocking these URLs and just keeping an eye on them, as I’ve had issues in the past (caused by issues with refreshing) where all of the URLs have been reverted back to the old structure without 301 redirects being applied.
Another issue with Magento rewrites is when Magento appends a number to the end of product and category URLs, so -1, -2, -3 for example. This happens when an existing URL path is already being used and the rewrites are replacing the original URL without changing it. This can be a huge issue and usually requires development resource to resolve. If you have any questions about this – feel free to drop me an email.
Ensure that 301 redirects are being used
By default, Magento is set to use 302 redirects, which will prevent redirects and rewrite rules from passing value. I would strongly recommend ensuring that your redirects are set to 301 to ensure that you’re making the most of your link value.
Pagination pages being indexed
Magento category and sub-category pages will generally serve large numbers of products via different pages (pagination), which will mean the same content is being used on different variations of the same page. These pages should really use the rel next and prev tag, which was introduced by Google in 2011 to help webmasters illustrate that they are paginated pages.
The tag, which can be added to the pagination links or via the <head> would look like this:
<link rel=”next” href=”http://website.com/clothing?p=6″ />
<link rel=”prev” href=”http://website.com/clothing?p=4″ />
A few other issues to lookout for:
- SIDs – sessions IDs can cause all kinds of duplicate content issues and are often caused by the user being moved from one domain to another (generally a subdomain)
- Magento performance – Magento is notoriously slow which, in very severe cases, can impact organic search rankings. I would recommend talking to my old agency GPMD if you’re looking at full-page caching or using something like MOD_rewrite to optimise your Magento website
- Pages without unique content – pages like wishlist pages, admin pages etc should be blocked to search engines as they add no value to the user
- Magento sitemap – The magento sitemap is always being criticised as it can’t be edited and it often includes unwanted pages and assigns strange priorities. I would recommend looking at third-party modules to resolve this issue.
Most of these issues can be resolved by using the MageSEO extension, which costs $249 but has a lot of additional functionality. You can purchase the plugin here: http://mageseo.net
I am planning on adding to this blog post as I think of more issues to add, if you have any, please feel free to leave a comment. This blog post was last updated on the 18th of January 2014.
If you have any questions about anything I’ve mentioned in this blog post or anything else related to Magento, please feel free to drop me an email at firstname.lastname@example.org. I also provide full Magento SEO audits and have worked with Magento retailers of all sizes from all over the world – please feel free to email me if you would like to discuss a project.