如何阻止谷歌索引我的Github存储库

sza*_*gab 61 robots.txt github

我使用Github存储我的一个网站的文本,但问题是谷歌也在Github索引文本.因此,相同的文本将显示在我的网站和Github上.例如,这个搜索最热门的是我的网站.第二个命中是Github存储库.

我不介意人们是否看到消息来源,但我不希望Google对其进行索引(并且可能会对重复内容进行处罚.)除了将存储库设为私有之外,还有什么方法可以告诉Google停止对其进行索引吗?

Github Pages的情况下会发生什么?这些是源在Github存储库中的站点.他们有同样的重复问题吗?

就拿这个搜索最上面的打击导致了马尔巴网站,但我没有看到在搜索结果中列出.怎么样?

sza*_*gab 78

GitHub 的https://github.com/robots.txt文件允许对'master'分支中的blob进行索引,但是限制所有其他分支.因此,如果您没有"主"分支,Google就不应该为您的网页编制索引.

如何删除'master'分支:

在你的克隆中创建一个新的分支 - 让我们称之为'main'并将其推送到GitHub

git checkout -b main
git push -u origin main
Run Code Online (Sandbox Code Playgroud)

在GitHub上更改默认分支(请参阅存储库的"设置"部分)或https://github.com/blog/421-pick-your-default-branch

然后从克隆和GitHub中删除master分支:

git branch -d master
git push origin :master
Run Code Online (Sandbox Code Playgroud)

让其他可能已经分叉您的存储库的人也这样做.

或者,如果您想在经济上支持GitHub,您可以私有化https://help.github.com/articles/making-a-public-repository-private

  • 我不相信这个答案是正确的。 (7认同)
  • @MichaelMior 查看 robots.txt 档案,似乎自 2020 年 6 月左右以来这个答案不再正确。 (6认同)
  • 谢谢.我按照步骤进行了操作,但是我是直接从github.com制作的 (2认同)
  • @szabgab如果在`master`分支上提供`username.github.io`存储库.像`username; github.io/project-one`这样的项目存储库是基于`gh-pages`分支提供的.请参阅https://help.github.com/articles/user-organization-and-project-pages/ (2认同)

小智 7

我可以想到目前有效的两种解决方案:

  1. 将您的存储库重命名为以tags. 例如,将my-repo其重命名为 ,而不是tags-my-repo。或者:
  2. 创建一个新分支,但不要将其设置为默认分支。然后,在默认分支上删除所有文件。这具有以下副作用:a) 使默认分支除了隐藏爬虫之外毫无用处,同时保持公开状态;b) 迫使您使用新分支作为主分支。您仍然可以根据需要重命名现在无用的默认分支和事实上的新分支。

为什么我认为此线程中的旧解决方案不再有效: https://github.com/robots.txt从那时起已发生变化。在 2013 年提出最初的问题时,robots.txt 看起来像这样

User-agent: Googlebot
Allow: /*/*/tree/master
Allow: /*/*/blob/master
Disallow: /ekansa/Open-Context-Data
Disallow: /ekansa/opencontext-*
Disallow: /*/*/pulse
Disallow: /*/*/tree/*
...
Run Code Online (Sandbox Code Playgroud)

而现在没有Allows 而只​​有Disallows:

User-agent: *

Disallow: /*/pulse
Disallow: /*/tree/
Disallow: /gist/
Disallow: /*/forks
...
Disallow: /*/branches
Disallow: /*/tags
...
Run Code Online (Sandbox Code Playgroud)

如果您只是创建一个新分支,将其设置为默认分支,然后删除旧分支,则 URLhttps://github.com/user-name/repo-name将仅显示新的默认分支并在当前robots.txt.

我的上述解决方案如何工作:( 它们基于Google当前解释robots.txt的方式

解决方案 1将使您的存储库的 URL match Disallow: /*/tags,从而将其排除在抓取之外。因此,事实上,您可以使用表单disallow路径中的任何单个单词作为存储库名称的前缀/*/word,而无需以斜杠结尾(因此tree不起作用,因为Disallow: /*/tree/以斜杠结尾)。

解决方案 2只是确保默认分支(唯一被爬网的分支)不包含您不希望爬网的内容。换句话说,它将所有相关内容“移动”到一个分支,因此它们位于https://github.com/user-name/repo-name/tree/branch-name,由于 而不会被抓取Disallow: /*/tree/

免责声明

  • 显然,我的解决方案在很大程度上取决于robots.txt任何给定时间点的情况。
  • 这并不能保证它不会出现在搜索结果中
  • 这应该是显而易见的:由于您的存储库是公开的,因此已经知道您的用户名的人始终可以导航到您的内容。这一事实与当前的问题无关,但我认为我应该把它放在那里。