7

我很难确定我们的 Asp.net 网站没有在搜索引擎中被索引的原因 - 整个网站。当我使用谷歌的“Fetch As 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>
4

1 回答 1

4

我自己找到了答案。

确保在使用前检查 Request.UserLanguages != null 。此外,请确保将 CurrentCulture 设置为有效的默认值。这两项检查的原因是机器人不使用 Request.UserLanguages - 它始终为空。浏览器确实使用 Request.UserLanguages。换句话说:如果 Request.UserLanguages 为空,则不要设置 CurrentCulture。

这是问题所在:

我站点中的所有 aspx 页面都从继承自 System.Web.UI.Page 的自定义基类继承。这不是问题,除非您使用仅针对机器人引发异常的代码覆盖 OnLoad() 或 init 事件。我的 OnLoad() 事件中有这行代码:

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0]);

此代码在从浏览器访问 aspx 页面时效果很好。呸!谁不会使用浏览器...?答案:googlebot 和所有其他机器人。

如何检查 googlebot 是否在索引您的网站时遇到问题:

  1. 如果您还没有,请注册 google webmastertools。
  2. 转到实验室 -> 作为 Googlebot 获取
  3. 输入您要检查的网址。然后单击状态链接以查看 googlebot 找到了什么。如果 googlebot 返回任何重定向(如 302),这通常不是一件好事。如果您网站上的所有页面都将 302 重定向到您的自定义错误页面,那么您就有问题了。这意味着每当 googlebot 尝试访问它们时,您的网页都会引发错误(未处理的异常)。查看您的 Page_Load() 和 Init() 函数是否存在 googlebot 可能存在的错误。您还可以使用名为curl ( http://curl.haxx.se/ ) 的酷炫命令行应用程序来测试您的页面。使用这个工具,我能够在发布到生产之前在我们的测试服务器上测试该站点(这是您每次使用 google fetch 进行更改时都必须执行的操作)。
于 2010-12-07T00:23:33.583 回答