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