使GWT应用程序可被搜索引擎抓取

时间:2010-03-12 03:01:49

标签: gwt servlets

我想使用#!令牌来使我的GWT应用程序可抓取,如下所述: http://code.google.com/web/ajaxcrawling/

有一个可在线使用的GWT示例应用程序,例如: http://gwt.google.com/samples/Showcase/Showcase.html#!CwRadioButton

将以下静态网页提供给googlebot: http://gwt.google.com/samples/Showcase/Showcase.html?_escaped_fragment_=CwRadioButton

我希望我的GWT应用程序能够做类似的事情。简而言之,只要在URL中找到_escaped_fragment_参数,我就会提供不同的页面风格。

为了让服务器提供其他东西(静态页面,或通过无头浏览器动态生成的页面,如HTML Unit),我应该修改什么?我猜它可能是web.xml文件,但我不确定。

(注意:我考虑过检查随GWT SDK提供的Showcase应用程序,但遗憾的是它似乎不支持在_escaped_fragment_上提供静态文件而且它不使用#!令牌..)

2 个答案:

答案 0 :(得分:2)

如果你想使用web.xml,那么我认为它不适用于servlet-mapping,因为url-patterns忽略了get参数。 (不是100%肯定,如果还有其他方法可以实现这一点。)

您当然可以将Showcase.html映射到servlet,并在该servlet中根据get参数“_escaped_fragment_”决定要执行的操作。但是调用Servlet只是为了为大多数请求提供静态页面有点贵(不是太糟糕,但仍然。如果你确定它没有改变,你可以设置缓存头)。 / p>

或者您可以在服务器前面安装Apache或其他东西 - 但我明白,我也不想这样做。也许你的JavaEE服务器(你使用的是BTW?)在请求传递给Web容器之前提供了一些URL过滤机制 - 我也想知道它!

答案 1 :(得分:2)

找到我的答案!支持可抓取超链接的Showcase示例位于以下分支中: http://code.google.com/p/google-web-toolkit/source/browse/branches/crawlability/samples/showcase/?r=7726

它在web.xml中定义了一个过滤器,用于将带有_escaped_fragment_令牌的网址重定向到HTML单元的输出。