Restlet-提供静态内容
时间:2020-03-06 14:53:42 来源:igfitidea点击:
使用Restlet,我需要在与Web服务相同的上下文中提供一些简单的静态内容。我已经为该组件配置了一个"目录",但是在测试中,我发现该组件仅可服务于" 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"资源。 (扩展名会被忽略吗?),而不是我期望的目录中的静态文件。
如果爱因诺知道这是为什么,或者如何更改它,我很想知道。没什么大不了的,仅用于测试。我认为无论如何,我们都会在生产过程中将apache或者nginx放在这之前。
Restlet中的路由器默认情况下使用" Template.MODE_STARTS_WITH"匹配模式。我们总是可以通过设置router.setMatchingMode(Template.MODE_EQUALS)来设置路由器的默认值。默认情况下,这将为附件打开严格匹配。我们可以选择使用setMatchingMode覆盖单个路由。
有关Restlet路由的良好文档