robots.txt
is prefix matching, so a rule like Disallow: /?b=9
will block all URLs that start /?b=9
. Your URLs start /shopp...
so they are not blocked.
However, you can use a *
(wildcard - 0 or more instances of any character) to represent the first part of the URL. This is an addition to the "standard", but the main search engine bots support it:
Disallow /*/?b=9
The above should block /shopping/books/?b=9
and /<anything>/?b=9
.