使用Restlet我需要在与Web服务相同的上下文中提供一些简单的静态内容。我已经使用 Directory 配置了组件,但在测试中,我发现它只会提供'index.html',其他所有内容都会产生404.

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

所以... http:// service http://service/index.html 都有效,

http://service/other.html 给了我一个404

有人可以对此有所了解吗?我希望./content目录中的任何文件都可用。

PS:我最终计划使用反向代理并从另一个Web服务器上提供所有静态内容,但是现在我需要它按原样工作。

有帮助吗?

解决方案

好吧,我弄明白了这个问题。实际上,Restlet似乎基于前缀路由请求,但是没有正确处理最长匹配前缀,它似乎也忽略了文件扩展名。

例如,如果我将资源附加到“/ other”...以及“/”上的目录。我请求/other.html,实际发生的是我得到的“/ other”资源。 (扩展名被忽略?),而不是我期望的目录中的静态文件。

如果aynone知道为什么会这样,或者如何改变它,我很想知道。这不是什么大问题,只是为了测试。我认为无论如何我们都会在生产中使用apache或nginx。

其他提示

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

有关Restlet路由的良好文档

scroll top