·

A Disallow rule in robots.txt is a note taped to a locked door telling Google not to go inside — it says nothing about whether Google can still write the address down and hand it to someone else.

By Florencia July 21, 2026 7 min read

Our Shopify robots.txt guide covers what Shopify blocks by default — checkout, admin, account pages, and internal search results — and how to edit the file safely on Shopify 2.0. That post answers “what’s blocked and how do I check it.” This post answers a narrower, weirder question that guide doesn’t: if /search is already blocked, why do /search?q=… URLs still turn up in Google Search Console’s coverage report, sometimes even in a live Google search?

The short version: a Disallow rule stops Googlebot from crawling a page. It does not stop Google from indexing the URL. Those are two different jobs, and Shopify’s default setup only ever does the first one for your search results.

Closing this specific gap means editing your theme’s robots.txt.liquid directly — no app does that part for you, including Plug In SEO. What its Scanner does catch on the rest of your store: missing meta tags, heading structure problems, and schema gaps — the technical issues that are actually fixable from inside an app.

Install Plug In SEO →

What Shopify actually blocks on your search results page

Shopify’s auto-generated robots.txt has included a rule for internal search since before Shopify 2.0, and it’s still there. Shopify’s own documentation lists it plainly: “Disallow: /search — Search result pages don’t need to be crawled.” We checked a live Shopify 2.0 store’s robots.txt directly while researching this post, and the rule is exactly where Shopify says it is.

So the premise merchants usually start from — “robots.txt blocks my search pages, so I’m covered” — is half right. The rule is real and it works as a crawl block. What it doesn’t do is guarantee those URLs stay out of Google’s index, and that’s the part that trips people up.

Crawling and indexing are two different jobs

Google’s own robots.txt documentation says this directly: “Google can’t index the content of pages which are disallowed for crawling, but it may still index the URL and show it in search results without a snippet.” If another page links to a /search?q=… URL — a filter widget, a “no results” redirect, a stray external link, even a sitemap slip — Google can add the bare URL to its index without ever opening it. No title, no description, no content, just a URL sitting in the index.

robots.txt Disallow

Tells Googlebot not to request the page. Stops crawling. Does not remove or block the URL from the index if Google already has it, or finds it another way.

noindex meta tag

Tells Google, once it has crawled the page, not to include it in the index. Only works if the page is crawlable — a robots.txt block hides the tag from Google entirely.

That last line in the second card is the part most “just add noindex too” advice glosses over. A noindex tag sitting on a page Google is disallowed from crawling is invisible — Google never gets far enough to read it.

Across the modern web, the noindex directive appears on just 3.5% of desktop pages and 2.4% of mobile pages. HTTP Archive, 2025 Web Almanac, SEO chapter

Most sites — Shopify stores very much included — simply don’t use noindex anywhere. Shopify’s Dawn theme (and its derivatives) has no <meta name="robots"> tag anywhere in its base layout file. The only protection your search results page has out of the box is the crawl block, not an index block.

Why a blocked search URL can still show up in Google

This isn’t a hypothetical. Merchants running Shopify stores have asked this exact question in Google’s own Search Central help community: why does Search Console’s coverage report show “Indexed, though blocked by robots.txt” for pages they thought were fully excluded. Ahrefs’ own explainer lays out the fix in one sentence: if you don’t want a URL indexed, add a noindex tag while allowing crawling so Google can actually discover and read it; if you do want it indexed, remove the crawl block instead. Trying to do both at once — block crawling and rely on noindex — doesn’t work, because the two rules cancel each other out.

What Shopify’s default setup does NOT do for search results pages:

  • No noindex meta tag on the search template — confirmed absent from Dawn’s base theme layout
  • No canonical pointing search-result URLs anywhere else
  • No distinction between a real, useful query and a typo or empty-result search — all of them get the same treatment

To be clear on how much this usually matters: Google’s John Mueller has said, as reported by Search Engine Journal, that URLs indexed despite a robots.txt block are “unlikely to be shown in search” for most low-value parameter pages, and that not every “Indexed, though blocked by robots.txt” warning needs urgent action. That’s fair advice for stray tracking parameters. Search results pages are a different case worth taking more seriously, because unlike a random tracking URL, a search page’s title tag and on-page text usually contain the literal query someone typed — which means it can occasionally rank for that exact long-tail phrase, competing with (or duplicating) a real product or collection page that should own that keyword.

85% of robots.txt requests returned a valid response in 2025 — but 13.3% of desktop sites and 13.2% of mobile sites have no robots.txt file at all. HTTP Archive, 2025 Web Almanac, SEO chapter

Shopify stores sit in the majority that does have a working robots.txt by default — which is exactly why merchants assume the search-page problem is already solved. The file is doing its one job correctly. It was just never designed to do the other one.

How to actually close the gap

The fix isn’t stacking a noindex tag on top of the existing block — it’s deciding which rule should do the work and removing the one that’s in its way.

  1. Add the noindex tag to your search template. In theme.liquid, wrap a robots meta tag in a condition that targets the search template, so it only applies to /search pages and nothing else.
  2. Open crawling for that one path. Shopify’s own developer documentation for robots.txt.liquid shows how to filter out a single default rule by looping over group.rules and skipping the one where rule.directive is Disallow and rule.value matches the path — their example does this for /policies/, and the same pattern works for /search.
  3. Let Google recrawl. Once the block is lifted for that path, Googlebot can reach the page, read the noindex tag, and drop the URL from the index on its next crawl — instead of holding a bare, content-less URL indefinitely.

Yes, this means giving up the crawl-budget benefit of blocking /search outright. For the vast majority of stores that isn’t a real cost — a search template is cheap for Googlebot to fetch once and then leave alone, and it’s a fair trade for actually solving the indexing problem instead of half-solving it.

How to check if you’re affected

  • Search Console → Pages report. Filter for “Indexed, though blocked by robots.txt” and check whether any of the listed URLs contain /search.
  • Search Console’s URL Inspection tool. Paste in a /search?q=… URL from your own store and see whether Google reports it as indexed.
  • A live Google search. Try site:yourdomain.com inurl:search and see what comes back.

Frequently asked questions

Does Shopify block search results pages from Google?

Yes — Shopify’s default robots.txt includes Disallow: /search, confirmed in Shopify’s own documentation and on live Shopify 2.0 stores. This stops Googlebot from crawling /search?q=… pages, but crawling and indexing are separate mechanisms, so the block alone doesn’t guarantee those URLs stay out of Google’s index.

Can a page blocked by robots.txt still get indexed?

Yes. Per Google’s own documentation, Google can index a URL it’s disallowed from crawling if it discovers that URL another way (an internal link, an external link, a sitemap). It shows up in the index as a bare URL without a snippet, since Google never read the page’s content.

Does adding a noindex tag fix this if robots.txt already blocks the page?

Not on its own. Google’s documentation on blocking indexing is explicit: if a page is blocked by robots.txt, the crawler never sees the noindex rule on it. To make noindex work, you have to allow crawling of that page — which for a Shopify search template means editing robots.txt.liquid to remove the /search disallow rule for that path.

How do I edit robots.txt.liquid to allow crawling of just /search?

On a Shopify 2.0 theme, open robots.txt.liquid in the theme code editor and loop over group.rules, skipping the rule where rule.directive equals Disallow and rule.value equals /search. Shopify’s developer documentation shows this exact filtering pattern for a different default path (/policies/); the same technique applies to /search.

What’s the difference between this and Plug In Useful’s general Shopify robots.txt guide?

Our Shopify robots.txt guide covers what Shopify blocks by default across the whole store and how to edit the file safely. This guide is narrower: specifically why a robots.txt block on /search doesn’t guarantee those pages stay out of Google’s index, and the exact steps to close that particular gap with a properly-crawlable noindex tag.

Plug In SEO catches the technical issues an app actually can

Robots.txt rules and noindex tags are a manual, theme-code fix — Plug In SEO’s Scanner doesn’t track crawl or indexing status. What it does flag across your whole store: missing meta tags, broken heading structure, and schema gaps, so the rest of your technical SEO isn’t riding on assumptions either.

Install Plug In SEO →