Over the last few years, I’ve worked on a host of enterprise-level Magento websites for companies from all over the world and during this time I’ve faced pretty much every technical Magento SEO issue imaginable.
Magento can be a bit of a 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 and duplicate content issues.
Layered / faceted navigation issues
It is very common for layered or faceted navigation to cause duplicate content issues with Magento, as filters that create new URLs will often get indexed by search engines. Magento out of the box appends query string filter parameters, but a number of non-proprietary modules also use directories and various other conventions, which still lead to the same outcome.
One of the biggest mistakes I see retailers make in ecommerce SEO is simply changing 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, due to the volume of low quality pages being indexed, it leaves a website susceptible to Google Panda, which specifically targets websites with high levels of indexable pages with very little unique content.
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 (noindex, follow) 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 message to search engines.
I would recommend using the noindex, follow tag, as this tells search engines not to index the page but to continue crawling the website. If you already have lots of these filter pages in the index, this will help you to either remove them (in Google Webmaster Tools) or tell search engines to stop indexing the pages.
This can be achieved by using the MageSEO plugin (which is a joint project between me and a Magento development agency), 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
The canonical tag can be a very good solution for preventing these pages from being indexed, by canonicalising back to the parent category page (this will also pass value back to the page). I do have a couple of reservations with the canonical tag – the first is that I’ve seen many occasions where search engines have ignored the canonical tag if the dynamic pages have links and appear authoritative. The second is that if you already have the pages in the index (and you need to resolve the issue fast) it can take a long time for Google and other search engines to adapt to the change. You also won’t be able to manually remove the pages as they won’t meet Google removal guidelines.
Parameter handling in Google Webmaster Tools
I’ve always suggested that the parameter handling resource in Google Webmaster Tools isn’t overly effective, 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 assigning noindex, follow meta robots tags to the search page and the children queries contained within the directory. If you’re having issues with crawl budget, I’d suggest using the robots.txt file instead of meta robots tags.
It’s really common for secure pages to be indexed by Google (for non-secure websites), 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 (including category path within 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 URL rewriting, which can cause either category or products 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.
Another cause for the number being added to the URL comes from updating products via a CSV file – when this happens you simply need to ask your developer to remove the rewrites from the rewrite table, although this should be tested extensively before being applied to your live site.
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.
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″ />
Session IDs / SIDs
Sessions ID pages are used to record a user’s session, commonly when they move from one domain to another. These pages can cause all kinds of duplicate content issues if they are indexed and there’s no limit to the amount of URLs that can be generated.
International targeting with Magento
For one reason or another, Magento merchants seem to really struggle with international store implementations from an SEO perspective. The most common configuration I see is merchants using one catalog and using an extension to add additional back-end fields (meaning the rest of the page remains the same) or using multi-store and making the mistake of using the same URLs, meta data, copy (in some places) and just creating variants for different countries they want to target.
The first of those two options (international extension) also usually serves the pages via odd query string URLs, as it’s as a variant of the original page. Also, if pages don’t have content usually these pages will have the content of the original page – which is bad from a panda perspective, as this means you’re going to have duplicates of the original pages.
I would suggest using multi-store, noindexing pages until they have unique content and also using the hreflang tag. You can choose to do this via a sub-directory or separate CCtlds. The href-lang tag should be implemented so that the equivalent URL is referenced from other stores on a page-level basis – I see too many sites that just reference the homepage on every page of the site.
This is a fundamental thing to get right, as doing it wrong can have very serious consequence from an SEO perspective. I did a project for a mid-sized furniture retailer around a year ago – they were using an extension and around 20% of the pages had unique content, the rest served the content from the original page (so English). They had no hreflang tag and lots of low quality pages in the index. We implemented the hreflang tag, removed lots of pages (until we’d published new content) and paid lots of students to write localised content for products and category pages) – they saw an increase in organic visibility of over 350% over the next year, including serious improvements for international phrases.
Other Magento SEO issues
- 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.
- Feed-related duplicate content – if you’re using your feed to send content to third party websites, you should look to have a second catalog with separate content, as this can cause serious duplicate content issues with external websites.
- Product title tag conventions – I’d suggest editing the convention of product title tags, which you won’t be assigning manually if you have a lot of SKUs. Make sure you include key product characteristics to optimise for long-tail traffic.
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 a message via this form (or email firstname.lastname@example.org). I also provide Magento SEO audits and consultancy for large Magento projects.