2008-09-29 137 views
3

使用Restlet我需要在与我的Web服务相同的上下文中提供一些简单的静态内容。我已经与Directory配置的组成部分,但在测试中,我发现它只会“的index.html”,一切的结果在404Restlet - 提供静态内容

router.attach("/", new Directory(context, new Reference(baseRef, "./content")); 

所以... http://servicehttp://service/index.html都工作,

http://service/other.html使我对这个404

任何人都可以提供一些线索?我希望./content目录中的任何文件都可用。 PS:我最终打算使用反向代理服务器,并将所有静态内容从另一个Web服务器上关闭,但现在我需要按照原样工作。

回答

2

嗯,我想出了这个问题。实际上Restlet似乎是根据前缀路由请求,但不能正确处理最长的匹配前缀,它似乎也忽略文件扩展名。

因此,例如,如果我有一个资源附加到“/其他”和“/”上的目录。我请求/other.html,实际发生的是我得到“/ other”资源。 (该扩展名被忽略?),而不是我所期望的目录中的静态文件。

如果aynone知道这是为什么,或者如何改变它,我很想知道。这不是什么大事,只是为了测试。无论如何,我认为我们会在产品的前面放置apache或nginx。

+2

你得到了答案吗? – Shah 2011-06-20 19:20:21

2

默认情况下,Restlet中的路由器使用“Template.MODE_STARTS_WITH”匹配模式。您始终可以通过执行router.setMatchingMode(Template.MODE_EQUALS)来设置路由器默认值。这将默认打开严格的匹配附件。您可以选择使用setMatchingMode覆盖单个路线。

Good documentation on Restlet Routing