Online store SEO

Filter, sort and search URLs: stop them wasting Google's crawl of your store

18 Oct 2026 ·5 min read · اقرأ بالعربية

Every filter, sort order and search box on a store can produce a new URL: ?sort_by=price, ?filter_color=black, ?orderby=date, ?s=oud. Combine a few filters and one category can turn into hundreds or thousands of URLs that show the same products in a different order. Google crawls them, spends its time on pages that add nothing, and may index thin near-duplicates instead of your real category pages. Action links are worse. Crawlers following WooCommerce's ?add-to-cart= links hit thousands of uncached URLs; Google's crawl team filed a bug over it, and action parameters made up about a quarter of the crawl issues Google reported for 2025.

What Google recommends

  • Filters. If you don't need filtered URLs in search results, disallow the filter parameters in robots.txt; Google calls this the preferred option. Return a 404 for filter combinations that have no products.
  • Pagination. Give each page (?page=2, ?page=3) its own self-referencing canonical and link the pages with normal <a href> links. Google no longer uses rel="next" and rel="prev", and it doesn't follow pagination that relies on # fragments.
  • One control per URL pattern. Block it in robots.txt to stop crawling, or add noindex to keep it out of the index, not both. A URL blocked in robots.txt is never fetched, so its noindex is never read.

How to check

  1. Open a category, apply a filter and a sort, and note the parameters that appear in the address bar.
  2. Check whether your robots.txt disallows those parameters.
  3. View the source of a filtered URL and read its canonical and robots meta.
  4. Open page 2 of a category. Check that its canonical points to page 2 itself and that page 1 links to it with an <a href>.
  5. Run the free audit. Store Audit by Ahmed Fayed fetches a paginated category, a filter or sort URL and an internal search URL, and reports whether they return 200, whether they're indexable, and whether page 2 is self-canonical and linked.

How to fix

Salla

Salla's default robots.txt blocks no filter or sort parameters. A 2026 Arabic guide recommends keeping filter and sort pages out of the index. I haven't confirmed the parameter names Salla uses, so take them from your own store's address bar before writing rules, and don't paste WooCommerce rules, which match nothing on Salla. I also haven't confirmed where the robots.txt editor sits in the Salla dashboard.

Zid

Zid's default robots.txt already blocks internal search (/products?search=* and /products?q=*). Filter and sort parameter names are unconfirmed; if you find them indexed, add rules in the robots.txt editor (Dashboard › Online Store › SEO › Robots.txt file, Growth and Professional plans).

Shopify

Shopify's default robots.txt blocks sort_by, + tag combinations and multi-filter combinations, but single-filter URLs stay crawlable. The auto-generated /collections/all, /collections/vendors?q= and /collections/types?q= pages, and tag pages such as /collections/shoes/black and /blogs/news/tagged/offers, are indexable and often thin. Add noindex, follow in theme.liquid, and leave out the all condition if /collections/all is your main catalogue page:

{%- if current_tags or collection.handle == 'all' -%}
  <meta name="robots" content="noindex, follow">
{%- endif -%}

On pagination, sources disagree: one says Shopify themes canonicalize ?page=2 to page 1, another says each page is self-canonical. Fetch page 2 of a collection and read its canonical. If it points to page 1, fix the theme.

WordPress/WooCommerce

Current WooCommerce adds rel="nofollow" to classic add-to-cart links, and the block-based button avoids the parameter for simple products; older themes may not do either. WordPress has noindexed search results (?s=) since version 5.7, so check that no theme or plugin overrides it. Sorting (?orderby=) and layered-navigation (filter_) parameters are crawlable by default. Add rules like these:

User-agent: *
Disallow: /*?*add-to-cart=
Disallow: /*?*orderby=
Disallow: /*?*filter_

Custom-coded

Return a 404 for empty filter combinations, keep filter state in parameters you can disallow, link paginated pages with <a href>, and give each one a self-referencing canonical.

Common mistakes

  • Pointing the canonical of page 2, 3 and onward to page 1.
  • Blocking a URL pattern in robots.txt and adding noindex to it, expecting both to work.
  • A "load more" button with no <a href> link to the next page, so products past page one are never discovered.
  • Copying another platform's robots.txt rules.

Run the free Store Audit by Ahmed Fayed to check your store's filter, sort and pagination URLs. If you'd like help fixing this, contact me on WhatsApp +20 102 702 0701 or at ahmed-fayed.com.

Sources

Crawling

More in this series

Back to guides