我想防止搜索引擎从索引与一些特定的获取参数。
示例:
https://www.example.com/mypage.php
应该被索引- 不应对
https://www.example.com/mypage.php?myparam=1
进行索引
我有许多页面(超过10k)的获取参数是索引的顶部的主要页面,尽管发送了一个没有索引的标题。
我在robots.txt里有这个:
Disallow: /*?*myparam=
下面是html中的内容:
<meta name="robots" content="noindex" />
所有页面也有一个规范的引用主页(没有get params)
我想尝试以下方法,但如果我做错了,可能会产生灾难性的后果,我想检查一下我的方法是否正确:
<FilesMatch "\.php">
<If "%{QUERY_STRING} =~ /myparam/">
Header set X-Robots-Tag "noindex, noarchive"
</If>
</Files>
这种方法可以吗?或者你认为有更好的方法吗?
1条答案
按热度按时间ui7jx7zq1#
我在robots.txt里有这个:
这就是问题所在
robots.txt
防止搜索引擎机器人 * 抓取 * 您的网站。如果这些页面被链接到,这不一定会阻止这些页面被 * 索引 *。如果您阻止了 crawling,那么搜索引擎机器人将不会看到HTML或
X-Robots-Tag
HTTP响应头中的 metarobots标记,因为该页面从未被请求过。(虽然您通常会在搜索结果中得到通知,并带有沿着“由于此站点的robots.txt,此结果的说明不可用-了解更多信息”这样的搜索说明。
因此,您应该移除
robots.txt
档案中的项目。然而,还有一个问题是,您如何确定页面是否被索引,以及这是否真的是一个问题。如果您使用
site:
搜索,则通常会返回在自然搜索中通常不会返回的URL。在robots.txt
中被阻止的URL在自然搜索结果中返回是不常见的,因为“内容”通常,site:
搜索是找到这些仅包含URL的“索引”URL的唯一方法。所有页面也有一个规范的引用主页(没有get params)
如果URL的非参数版本是真正的规范版本(即不是完全不同的页面),这本身就足够了,并且是首选选项。
“canonical”标记(如果被接受)将有效地将链接汁传递到规范URL。
然而,规范标签只是“咨询”。如果谷歌确定规范网址不是真正规范的(例如,如果它是足够不同的),那么它被忽略。
您也可以在GSC中解析URL参数规范化。
UPDATE:结束“tag”应该是
</FilesMatch>
,而不是</Files>
。或者,使用非正则表达式<Files ".php">
指令(更可取)。否则,这是“OK”的,除了它可能捕获太多的信息。它将在任何Map到 * 包含 *
.php
的文件的请求上设置X-Robots-Tag
头-而不仅仅是文件扩展名(即使请求的URL本身不是针对.php
文件),并且该请求在查询字符串中的任何位置包含字符串myparam
(这有点笼统,因为它也会匹配abcmyparamxyz=1
-如果这是可能的话)。您可以更具体一些,避免使用
<FilesMatch>
指令。例如: