2010-03-12 65 views
8

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

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

将服务于以下静态网页的谷歌机器人: http://gwt.google.com/samples/Showcase/Showcase.html?_escaped_fragment_=CwRadioButton

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

我应该修改哪些内容才能让服务器提供其他内容(静态页面或通过像HTML Unit这样的无头浏览器动态生成的页面)?我猜它可能是web.xml文件,但我不确定。

(注:我想检查提供的GWT SDK的展示应用,但遗憾的是它似乎并不支持_escaped_fragment_服务静态文件,它不使用#!令牌..)

+0

跨GWT Google群组发布。您可能也想阅读那里的答案:http://groups.google.com/group/google-web-toolkit/browse_thread/thread/15a922e701e9e2db?hl=zh-CN – 2010-03-12 16:49:22

+0

我发布了一个问题以引发围绕此问题的更多讨论话题。 “使AJAX应用程序可抓取?如何在Google App Engine上构建简单的Web服务以生成HTML快照?” http://stackoverflow.com/questions/3517944/making-ajax-applications-crawlable-how-to-build-a-simple-web-service-on-google-a – 2010-08-19 01:12:34

回答

2

如果你想使用web.xml,那么我认为它不能用于servlet映射,因为url-patterns忽略了get参数。 (如果还有其他方法可以做到这一点,则不是100%确定)。

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

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

+0

感谢您的有见地的评论。我在Google App Engine上运行我的项目,所以我不确定有多少访问(甚至是哪个)servlet容器,我可能会发现,但是。经过一番阅读,我认为过滤器可以做到这一点,只要他们收到get参数即可。我会检查出来的。 – 2010-03-12 16:46:34

+0

在这种情况下使用过滤器与使用Servlet非常相似(我不认为,性能差异很大)。在任何情况下,您都应该能够通过servletRequest.getParameter(...) – 2010-03-12 17:54:20

+0

检索get参数有道理。但是,如果我不想处理请求(即,请求),则可以继续使用过滤器的其余部分。_escaped_fragment_参数不存在)。有没有办法对servlet做同样的事情? – 2010-03-12 22:48:52

2

找到我的答案!所述Showcase样品支承抓取超链接是在以下分支: http://code.google.com/p/google-web-toolkit/source/browse/branches/crawlability/samples/showcase/?r=7726

它定义在一个web.xml滤波器与_escaped_fragment_令牌HTML单元的输出重定向的URL。

+0

只是对上述评论。如果你使用自己的Tomcat,这可能会起作用。就我而言,我正在使用Google App Engine。现在的问题是,HTML单元不能在App Engine上运行,但它可能会很快完成,根据: http://www.google.com/url?sa=D&q=https://sourceforge.net /tracker/index.php%3Ffunc%3Ddetail%26aid%3D2962074%26group_id%3D47038%26atid%3D448269%23&usg=AFQjCNGGJuWPDqFfUuc4k44HormgSgEM6g – 2010-03-14 21:12:18

+0

该分支不再存在,即,这不再是一个有用的,更不正确的答案。 – 2011-01-26 03:28:17

+0

对不起。无法找到它,我没有选中它并纠正。 – 2011-02-09 20:06:51