3

使用 Restlet,我需要在与我的 Web 服务相同的上下文中提供一些简单的静态内容。我已经用 . 配置了组件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 服务器提供所有静态内容,但现在我需要它按原样工作。

4

2 回答 2

2

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

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

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

于 2008-09-29T21:01:04.527 回答
2

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

关于 Restlet 路由的好文档

于 2009-10-13T04:19:20.650 回答