web-applications - Eclipse RAP 被 Google 抓取?

标签 web-applications web-crawler google-search-console eclipse-rap google-index

我正在开发一个 RAP 网站,并希望像 Google 这样的机器人可以访问它(我在这里只指 Google;但我认为其他搜索引擎的工作方式类似)。 Webapp 包含我从数据库加载的动态内容,具体取决于用户正在搜索的内容。如何使这些内容可供 Google 使用?
我已阅读 Google 的 ajax 抓取指南,但不知道如何将其应用于 RAP:

  • RAP 在“内部”进行 AJAX 调用。我可以将它们用于谷歌吗?如何?
  • RAP 是单页,我应该如何向 Google 提供站点地图 (XML)?

  • 提前致谢!

    最佳答案

    Ajax 的理念是应用程序不会一直加载新页面,而是在后台使用 Ajax 请求加载新的内容。无论如何,要在您的应用程序中提供“深层链接”,您需要包含片段部分的 URL,例如 example.com/myapp#mystate .使用这个技巧是因为当只有 URL 的片段部分发生变化时,浏览器不会重新加载页面。

    这与 RAP 没有什么不同。为了处理这种 URL,RWT 提供了浏览器历史 API。当您的应用程序的状态发生变化时,例如当用户选择某种选项卡或启动搜索时,您可以在浏览器历史记录中添加一个新条目,这有效地更改了浏览器中 URL 的片段:

    RWT.getBrowserHistory().createEntry( "!mystate", "Example" );
    

    这会将 URL 更改为 example.com/app/entrypoint#!mystate (此状态的“深层链接”)并在浏览器历史记录中添加一个名为“示例”的条目,因此您可以稍后使用浏览器的后退按钮返回此状态。

    为了能够对 URL 的更改使用react,您必须向浏览器历史记录添加一个监听器。每次片段部分更改时都会通知此监听器。当应用程序以片段启动时也是这种情况(有人跟随深层链接)。然后,您的应用程序负责重新安装此片段表示的状态。
    RWT.getBrowserHistory().addBrowserHistoryListener( new BrowserHistoryListener() {
      public void navigated( BrowserHistoryEvent event ) {
        // show state represented by event.entryId
      }
    } );
    

    RAP examples demo 为不同“子页面”使用片段 URL 的 RAP 应用程序示例。 .

    故事的其余部分应该在 Google's AJAX crawling guide 中解释。 .您的 ID 必须以 ! 开头生成带有 #!mystate 之类片段的 URL .这些 URL 是您应该添加到站点地图中的 URL。要为爬虫提供数据,您可以实现一个 servlet 过滤器,该过滤器捕获对 URL 模式 ?_escaped_fragment_=mystate 的请求。并返回特定状态的 HTML 表示。

    关于web-applications - Eclipse RAP 被 Google 抓取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11138321/

    相关文章:

    web-applications - 在 jetty 中配置外部 webapp 的最大帖子大小

    Java Webcrawler 提取电子邮件

    css - 如何修复 Google Search Console 中的问题 "Clickable elements too close together"

    json - Google JSON Review Snippet 未验证

    .net - 网站管理员工具中的 Google Sitemaps "Compression error"

    asp.net - 构建我的第一个 ASP 应用程序

    django - 如何获取表单中的表单字段值并发送邮件

    javascript - 无法通过 Perl 抓取/抓取使用 javascript 的网页

    python - 从 Ruby 到 Python : Crawlers

    javascript - 在浏览器上访问本地文件系统