SEO

Layered navigation gerando URL demais no Magento 2: como cortar

O Google descobriu 120 mil URLs da sua loja e indexou 900. O problema quase nunca é o conteúdo: é o filtro lateral multiplicando combinação de parâmetro sem limite.

Por Roger Takemiya · Publicado em · 5 min de leitura

Abre o Search Console de uma loja Magento média e olha o relatório de páginas. Quase sempre tem um bloco enorme em Descoberta — no momento não indexada e outro em Rastreada — no momento não indexada. São as URLs do filtro lateral.

A reação comum é ligar o canonical de categoria e esperar. Só que o canonical é uma dica que só existe dentro do HTML: para lê-la, o robô precisa baixar a página primeiro. O rastreio já aconteceu. O que você economiza é índice, não crawl budget.

De onde saem essas URLs

O Magento monta a URL do filtro usando o código do atributo como nome do parâmetro. Se você tem os atributos cor e tamanho filtráveis, a URL sai assim:

/camisetas.html?cor=52&tamanho=169

O filtro de preço é fixo, sempre price. E a barra de ordenação acrescenta os dela: p, product_list_limit, product_list_order, product_list_dir e product_list_mode.

Faz a conta de combinação. Seis atributos filtráveis, cada um com cinco valores: cada filtro tem seis estados possíveis (cinco valores mais o de não estar na URL), o que dá 6 elevado a 6 = 46.656 estados. Tira o estado sem filtro nenhum e sobram 46.655 URLs por categoria. Multiplica por quarenta categorias e você chegou nas suas cem mil, sem contar ordenação e paginação.

A boa notícia é que a conta funciona nos dois sentidos: tirar um atributo do filtro divide o total por seis.

Primeiro corte: menos atributo filtrável

Antes de mexer em qualquer coisa, veja quantos atributos estão filtráveis hoje. Direto no banco:

SELECT a.attribute_code, c.is_filterable, c.is_filterable_in_search
FROM catalog_eav_attribute c
JOIN eav_attribute a ON a.attribute_id = c.attribute_id
WHERE c.is_filterable > 0 OR c.is_filterable_in_search > 0;

Aparece coisa que não deveria estar ali: material, garantia, peso, atributo que o ERP criou e ninguém usa para escolher produto. Cada um desses multiplica o catálogo de URL.

Para desligar, o caminho é Stores > Attributes > Product, abre o atributo, aba Storefront Properties, campo Use in Layered Navigation. As opções são No, Filterable (with results) e Filterable (no results).

Minha regra em loja de cliente: filtro é o que o comprador usa para decidir. Roupa: tamanho, cor, marca. Eletrônico: marca, faixa de preço, uma ou duas especificações. O resto vira No. E quando ficar em dúvida, escolha Filterable (with results), nunca no results — a segunda gera link para combinação que devolve zero produto, ou seja, página vazia rastreável.

Repare que são duas colunas diferentes: is_filterable vale para a navegação por categoria e is_filterable_in_search para a página de busca. Desligar uma não desliga a outra.

Segundo corte: bloqueia o parâmetro no robots.txt

O Google recomenda literalmente isso para faceta: Disallow por parâmetro. E aceita curinga — o * vale por zero ou mais caracteres.

No Magento você edita em Content > Design > Configuration, abre a linha do store view e vai em Search Engine Robots, campo Edit custom instruction of robots.txt File. Um exemplo com os parâmetros que citei acima:

User-agent: *
Disallow: /*?*cor=
Disallow: /*?*tamanho=
Disallow: /*?*price=
Disallow: /*?*product_list_limit=
Disallow: /*?*product_list_order=
Disallow: /*?*product_list_dir=
Disallow: /*?*product_list_mode=

Troque cor e tamanho pelos códigos dos seus atributos — os que sobreviveram ao primeiro corte. Depois de salvar, limpe o cache e confira em https://sualoja.com.br/robots.txt se saiu do jeito que você escreveu.

Eu deixo a paginação de fora. Bloquear ?p= é comum e eu não faço: é por ali que o Google alcança o produto que está na página 7 da categoria. Prefiro perder rastreio em paginação a perder produto no índice.

Um cuidado que quase todo mundo esquece: Disallow não é noindex. Se essas URLs já estão indexadas, bloquear o rastreio congela o que está lá — o robô nunca mais entra para ver a tag de remoção. Nessa situação a ordem é ao contrário: deixa o robô entrar, serve noindex na página com filtro, espera cair do índice, e só então põe o Disallow.

Perguntas rápidas

Bloquear no robots.txt tira as URLs que já estão no Google?

Não. Bloqueio impede rastreio novo, mas a URL já conhecida pode continuar aparecendo, às vezes sem descrição. Para remover mesmo, use noindex enquanto o rastreio ainda está liberado e só bloqueie depois.

Perco tráfego se tirar atributos do filtro lateral?

Do filtro em si, não: quem filtra é o visitante que já está na categoria. O que você perde é a chance de uma página de filtro ranquear sozinha, e isso só compensa em combinação com busca real, tipo tênis de corrida masculino.

Dá para escrever esse robots.txt direto num arquivo no servidor?

Dá, mas o Magento serve /robots.txt pelo próprio aplicativo a partir da configuração de design. Um arquivo físico na raiz pode ser ignorado ou entrar em conflito, então prefira o campo do admin.

Pra conferir na fonte

  1. Crawling and indexing: managing faceted navigation — Google Search Central
  2. Introduction to robots.txt — Google Search Central
  3. Layered navigation — Adobe Experience League
  4. Design configuration (Search Engine Robots) — Adobe Experience League

crawl budget robots.txt layered navigation

Precisa de um orçamento? Ficarei feliz em ajudar. Clique Aqui