Robots.txt 禁用异常查询参数扫描

Robots.txt disable query parameters scanning with exceptions

我正在实施一些 SEO 更改,包括 robots.txt 更改,我正在解决这个问题。

我需要禁用(或者准确地说不允许)每个包含一些查询 URL 参数的 URL (?xy=...) 所以我添加了这条规则

Disallow: /*?*

不过有个小问题。我需要允许特定子 URL 的特定查询参数。 所以假设我需要允许 /picture?path=XY。这个 应该被允许 但是例如 /picture-other?path=XY not 所以 /picture?other_param=XY(/picture 没问题,但没有 just param named path)

是否可以在 robots.txt 中执行此操作?

编辑: (可能添加了更明确的说明)

禁用所有 URLS 包含查询参数(如 /x?param=1) 允许 [=55= 上的查询参数路径]/图片。 所以只有一个允许 URL 与查询参数将是 /picture?path=XY 没有其他 URLs 包含查询参数将被允许用于 robots

例子

允许

/picture?path=XY
/literally/any/route/without/query/param/you/can/imagine
/home
/

现在允许

/picture?param=1
literally/any/route/with/query/param/you/can/imagine?param=1
/some/other/url?query=5&param=1
/some/other/route/with/path/param?path=XY

不允许的路径 您提供:

/picture?param=1
literally/any/route/with/query/param/you/can/imagine?param=1
/some/other/url?query=5&param=1
/some/other/route/with/path/param?path=XY

机器人:

Allow: /*
Disallow: /picture?param=*$
Disallow: *param?*
Disallow: *param=*

大多数(如果不是全部)搜索引擎支持正则表达式:

* - 通配符

$ - URL 的结尾(字符串)

因此,如果您想禁止所有包含 param 的网址,只需将其包裹 *

更新:

Allow: /picture?*
Disallow: *?*=*
Disallow: *?*=*&*=*
Disallow: *?*=*=*

将阻止:

http://my-domain.com/test?xwadwa=1
http://my-domain.com/dwa?query=1
http://my-domain.com/test?dwadwa=1
http://my-domain.com/test?dwadwa=1&zxxxa=1
http://my-domain.com/test/dwa/dwa/dwa/dwa/dwa/dwa?xxxx=1

但会允许:

http://my-domain.com/picture?everything_after_this_point
http://my-domain.com/picture?everything_after_this_point&query=32131
http://my-domain.com/
http://my-domain.com/test/
http://my-domain.com/test/test/
http://my-domain.com/test/test/test/
http://my-domain.com/test/test/test/test