Magento SEO: How to handle problems caused by layered navigation?

Layered navigation, a feature available in Magento without any extensions is commonly used by many merchants around the world. It is also one of the most painful Magento features for the SEOs. It creates lots (depending on the amount of filters and products – often tens of thousands) of terrible URLs with duplicate / near duplicate content and identical page titles and descriptions.

I made this video to show you what are your options and what is in my experience the best possible solution for handling Magento layered navigation indexation issues. I hope it helps:

After you watched the video, you know what to do. How do you know if you did it correctly? Log-in to your Google Webmaster Tools, click on Health -> Fetch as Googlebot and see if layered navigation shows up.

I hope I helped. Anyone have a different experience and advice on this issue?

If you need any help, we can do a Magento SEO Audit for your site.

Related Inchoo Services

You made it all the way down here so you must have enjoyed this post! You may also like:

Build your 2017 Magento SEO strategy with these tips Ivona Namjesnik
Ivona Namjesnik, | 9

Build your 2017 Magento SEO strategy with these tips

Free eCommerce SEO consultations by Inchoo at Meet Magento Poland Tea Pisac Benes
, | 0

Free eCommerce SEO consultations by Inchoo at Meet Magento Poland

In SERP title tags no longer control what’s shown Toni Anicic
Toni Anicic, | 10

In SERP title tags no longer control what’s shown


  1. Hi,
    I do following in the .htaccess:
    RewriteCond %{HTTP_USER_AGENT} (Googlebot|otherbot|etc) [NC]
    RewriteCond %{REQUEST_URI} sort-direction [NC,OR]
    some other RewriteCond %{REQUEST_URI} [NC,OR]
    RewriteRule ^ - [G]

    The result is the bots getting 410 as status code.

  2. What about not using ajax and having a canonical on the result pages referencing the category page?
    For example, if the result page is:

    Let me know your thoughts.

  3. Your overview of all the terrible solutions for resolving this problem is very good.

    However your solution isn’t great and would probably be regarded by Google as cloaking. Google does have the ability to crawl with JS enabled and if your HTML varies significantly then you might get in trouble.

    The best solution I’ve found is to use non-crawlable Ajax URLs to display the pages you want to hide from search engines. You do this by using a # in the url with the parameters after it. These hashed parameters then load up the filtered product list:

    e.g. http:///

    It could be argued that this is cloaking, but at least it’s not hiding links. If Google has a problem with this and wants to crawl the whole site, you can always flip to using crawlable Ajax URLs by using #! instead of #.

    I’ve battled with this issue for many months on large E-Commerce sites (not just Magento). As you say, there is no perfect solution and this is a perfect example of why websites need SEOs, and simply can’t just “build for users”!

    1. Hi George,

      When this article was written, most of the top SEOs agreed that this was the way to go. I even talked to Rand Fishkin about it via e-mail before publishing it and he agreed (he has a very similar video actually).

      Nowadays I would agree with you. I would allow Google to index my javascript and find a workaround either in form of ajax, or maybe even in form of robots.txt disallow (depending on the size of the website and amount of layered filters).

  4. how exactly would you hide the layered navigation from bots?
    Do you have a solution for this that actually works? If so please let me know.

  5. So you are suggesting not to use Layered navigation. But I think this helps customer to find the product quicker. So far I have not any issue with using layered navigation but will like to know more about its SEO affects if any. Thank you

  6. is it good
    On Admin menu, System -> Configuration,

    on the left side, choose Catalog (under Catalog tab).

    On Search Engine Optimizations, set Use Categories Path for Product URLs to No

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <blockquote cite=""> <code> <del datetime=""> <em> <s> <strike> <strong>. You may use following syntax for source code: <pre><code>$current = "Inchoo";</code></pre>.

Tell us about your project

Drop us a line. We'd love to know more about your project.