Googlebot偶尔会使用错误的查询字符串参数为我们的某个网站编制索引.我不确定它是如何得到这个查询字符串参数(似乎没有任何网站链接到我们与坏链接,我们网站中没有任何东西插入坏值).坏参数导致网站抛出500错误,正如我们所期望的那样.
我的印象是Google不会将返回500错误的网页编入索引,但事实证明确实如此.所以现在我有两个问题:
1)为什么Googlebot会插入随机错误的查询字符串值?(我真的不关心这个问题的答案,但如果我们能做些什么来避免这个问题,它就能解决我们的问题.)
2)为什么谷歌索引一个返回500错误的页面?
以下是Googlebot创建的以及Google已编入索引的错误链接之一:
http://www.pbs.org/teacherline/catalog/browse/?sa=4&gb=baqhuxts&gb=20&gb=21&num=20&page=2&js=0&sa=1
坏参数是gb = baqhuxts.参数'gb'应该是一个整数.如果从查询字符串中删除该参数,则应该显示一个很好的目录页面.
关于nofollow和robots.txt解决方案:[删除]
我现在意识到我是一个白痴,并把一个元标记告诉搜索机器人索引页面.这是一件愚蠢的事情.我正在删除那些.W-(
如果您在Google上搜索"baqhuxts",您会发现它已使用此错误参数索引了10个页面.但是每个页面都返回500错误.有没有人了解Google为什么认为这些是有效的索引页面?
我正在努力确定我们的Asp.net网站没有被搜索引擎索引的原因 - 整个网站.当我使用谷歌的"获取Googlebot"工具时,它会抛出以下错误.我确保我的网站可以禁用会话(即在web.config中设置sessionMode ="Off"),我已经在网上搜索过,但仍然没有运气.
这是我从googlebot得到的错误:
HTTP/1.1 302 Found
Date: Thu, 02 Dec 2010 23:05:49 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Location: /ErrorPage.aspx?aspxerrorpath=/Default.aspx
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 168
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="%2fErrorPage.aspx%3faspxerrorpath%3d%2fDefault.aspx">here</a>.</h2>
</body></html>
Run Code Online (Sandbox Code Playgroud) 我没有很多头发,但是我已经把它留下了很少的东西.
我的MVC3应用程序通过Action提供图像
/Image/ShowImage/25-000252?t=a&o=1
Run Code Online (Sandbox Code Playgroud)
a是预定义图像大小,o是该项目的图像顺序
图像是控制器,ShowImage是返回FilePathResult的动作.所有这些都没有任何问题,除非Googlebot出现.然后,所有突然的请求验证开始
A potentially dangerous Request.Path value was detected from the client (?).
Run Code Online (Sandbox Code Playgroud)
如何以及为何超出我的理解能力.
ShowImage操作具有ValidateInput(False),web.config具有httpRuntime requestValidationMode ="2.0"但似乎没有任何帮助.
所以我只是花了一个小时试图弄清楚为什么我的日志在最后几个小时内每分钟都有几次缓慢的PHP脚本警告.
我最初专注于php慢日志和php错误日志吓坏了认为这是我的代码.事实上,我正在实施一些DNS调整,这就是为什么我被引导到了错误的道路上.
我最终检查了nginx错误日志,它显示了来自几乎相同IP的同行连接重置的一行一行.
我搜索了IP,发现它属于谷歌,所以这显然是访问该网站的谷歌机器人/蜘蛛.
这是错误日志的剪辑
2013/06/06 14:04:05 [error] 12313#0: *7435269 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.187, server: www.domain.com, request: "GET /c.html?q=xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com"
2013/06/06 14:04:05 [error] 12308#0: *7435135 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.167, server: www.domain.com, request: "GET /c.html?q=xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com"
2013/06/06 14:04:05 [error] 12308#0: *7435994 recv() failed (104: Connection reset by peer) while reading response …Run Code Online (Sandbox Code Playgroud) 我将以这种方式使用.htaccess阻止所有美国IP:
<Limit GET HEAD POST>
order deny,allow
deny from 3.0.0.0/8
deny from 4.0.0.0/25
deny from 4.0.0.128/26
deny from 4.0.0.192/28
deny from 4.0.0.208/29
....
allow from all
</Limit>
Run Code Online (Sandbox Code Playgroud)
在阻止所有美国IP后,Google是否能够访问和索引我的网站?
编辑:抱歉模棱两可,但我希望谷歌为我的网站编制索引.
谷歌或任何其他抓取工具是否可以抓取并索引返回301状态代码的网页?
我在谷歌看过一个页面,它已经有301个月了.但是,索引中该页面的缓存日期是几天前的.
可以谷歌只是忽略301并抓取页面的内容?
我有一个网站,嵌入了 Vimeo 的视频:
<iframe src="//player.vimeo.com/video/496371201" frameborder="0"></iframe>
Run Code Online (Sandbox Code Playgroud)
谷歌说它无法索引该视频,因为我没有提供缩略图。Google 的视频最佳实践文档指出:
提供高质量的缩略图
为了有资格出现在 Google 视频功能中,视频必须具有有效的缩略图。否则,该页面可能会被索引,但只会显示为纯蓝色链接。
您可以允许 Google 生成缩略图,或通过支持的方式之一提供缩略图:
- 如果您使用 HTML 标记,请指定海报属性。
- 在视频站点地图中,指定 video:thumbnail_loc 标记。
- 在结构化数据中,指定thumbnailUrl 属性。
- 如果您允许 Google 获取您的视频内容文件,Google 可以为您生成缩略图。
支持的缩略图格式:BMP、GIF、JPEG、PNG、WebP 和 SVG。
我有 PNG 文件的缩略图。HTML 代码是什么,可以将它们作为缩略图包含在iframeVimeo 的嵌入视频附近,以便 Googlebot 找到它?
我似乎无法找到明确的答案。如果我的页面是这样的:
<html>
<head>
<script>
var mypets = [
{ 'type': 'dog', 'name':'rover' },
{ 'type': 'cat', 'name':'kitty' }];
$('#btnShowEm').click(function() { $('#emptyAtFirst').text(mypets[0].name); });
</script>
</head>
<body>
<div id='emptyAtFirst'></div>
<button id='btnShowEm">ShowEm</button>
</body>
<html>
Run Code Online (Sandbox Code Playgroud)
即使“mypets”数据在开始时未显示在 html 中,Google 也会将其编入索引吗?现实世界的页面在一个类似的 javascript 对象中声明了大量内容,并显示其中的一些内容以响应用户操作;我想知道我是否必须做更多的事情才能根据所有内容对页面进行索引,而不仅仅是在 javascript 内容运行之前在 html 中可见的内容。
我在Amazon S3上有一个react-router站点,设置了404重定向到index.html,在那里他们找到了他们需要的代码,并且站点做了它应该做的事情.
在Google网站站长工具中,其中一条路线的"抓取为Google"会显示错误状态:未找到.
我使用自定义错误响应(404到200,响应页面路径/index.html)为该源设置了Cloudfront.
但其中一条路线的"抓取为Google"仍显示错误状态:未找到.
在Chrome或curl中,当我加载http:// [bucketname] .s3-website-us-west-2.amazonaws.com/list/listname/username时,我看到404,但页面会按预期加载.
但是当我加载http:// [randomchars] .cloudfront.net/list/listname/username时,我看到200没有重定向,页面按预期加载.
我已经提交了一个站点地图,其中包含我要编入索引的相关网址,并要求Google抓取该网站.它尚未被抓取,但我现在最好的希望是我看到的一些建议"Fetch as Google"不会遵循重定向,而Googlebot会在它实际抓取网站时.我希望情况确实如此,但如果我错过任何其他显而易见的事情,我很想知道.提前致谢!
googlebot amazon-s3 amazon-web-services amazon-cloudfront react-router
我已经向这个项目提出了 Pull 请求,该项目归 google 所有。因此,谷歌要求提供贡献者许可协议。我已经在这里签名了。我创建了 CLA。
首先,我认为我的 github 帐户中有两个电子邮件地址。因此,我还为这两个电子邮件 ID 创建了 CLA。
为了提交代码,我使用简单的方法: git add 。git commit -m '消息' git push -u origin 分支名称
谷歌机器人仍然无法验证我的 CLA。它给了我如下错误:
错误消息:我们为您(此拉取请求的发送者)找到了贡献者许可协议,但无法找到所有提交作者或共同作者的协议。如果您创作了这些内容,也许您在 git 提交中使用的电子邮件地址与签署 CLA 时使用的电子邮件地址不同(在此处登录以仔细检查)?如果这些内容是由其他人创作的,那么他们也需要签署 CLA,并确认他们同意将这些内容贡献给 Google。为了通过此检查,请解决此问题并让拉取请求作者添加另一个评论,机器人将再次运行。如果机器人不发表评论,则意味着它认为没有任何变化。
我已经为与我的 Github 帐户关联的两个电子邮件 ID 创建了 CLA。
我已启用双因素身份验证。
我已经一再承诺检查。我在 PR 上发表了评论,以检查 google-bot 是否解决了问题。
git add .
git commit -m 'Message'
git push -u origin branch_name
Run Code Online (Sandbox Code Playgroud)
如果有人过去遇到过此问题并成功解决,请描述完整的解决方案。
googlebot ×10
php ×2
seo ×2
.htaccess ×1
amazon-s3 ×1
asp.net ×1
git ×1
git-commit ×1
html ×1
indexing ×1
javascript ×1
nginx ×1
pull ×1
pull-request ×1
react-router ×1
video ×1
vimeo ×1