首页 > 解决方案 > Robots.txt 禁用查询参数扫描异常

问题描述

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

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

Disallow: /*?*

但是有一个小问题。我需要允许特定子 URL 的特定查询参数。所以可以说我需要允许/picture?path=XY。这应该是允许的,但例如/picture-other?path=XY不是/picture?other_param=XY(/picture 没问题,但不只是参数命名路径)

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

编辑:(也许添加了更清晰的说明)

禁用所有包含查询参数的 URL(如 /x?param=1),但允许 URL /picture 上的查询参数路径。因此,只有一个允许的带有查询参数的 URL 将是/picture?path=XY不允许机器人使用其他包含查询参数的 URL

例子

允许

/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

标签: regex.htaccessrobots.txt

解决方案


您提供的不允许的路径

/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仅环绕*它的 url。

更新:

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

推荐阅读