Restlet - 提供静态内容

3

我使用Restlet需要在同一上下文中提供一些简单的静态内容。我已经配置了一个Directory组件,但是在测试中,我发现它只会提供'index.html',其他所有内容都会返回404错误。

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

所以... http://servicehttp://service/index.html 都可以使用,但是http://service/other.html会显示404错误页面。请问有人能解决这个问题吗?我希望./content目录下的所有文件都可以访问。
PS:我打算最终使用反向代理,并从另一个Web服务器上提供所有静态内容,但现在我需要它像现在这样工作。
2个回答

2

我找到了问题所在。实际上,Restlet似乎根据前缀路由请求,但没有正确处理最长匹配前缀,并且似乎忽略文件扩展名。

例如,如果我将资源附加到“/other”…并在“/”上有一个目录。当我请求/other.html时,实际发生的是我得到了“/other”资源(扩展名被忽略?),而不是像我期望的那样从目录中获取静态文件。

如果有人知道为什么会这样,或者如何更改它,我很想知道。这不是什么大问题,只是为了测试。我想我们将在生产环境中放置apache或nginx。


2
你得到答案了吗? - Shah

2
默认情况下,Restlet中的路由器使用“Template.MODE_STARTS_WITH”匹配模式。您可以通过执行router.setMatchingMode(Template.MODE_EQUALS)来设置路由器默认值。这将在attach操作中默认启用严格匹配。您可以选择使用setMatchingMode覆盖单个路由。有关Restlet路由的良好文档,请参见此处

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接