【问题标题】:Restlet - serving up static contentRestlet - 提供静态内容
【发布时间】:2008-09-29 20:34:06
【问题描述】:

使用 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 服务器提供所有静态内容,但现在我需要它按原样工作。

【问题讨论】:

    标签: configuration restlet


    【解决方案1】:

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

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

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

    【讨论】:

    • 你得到答案了吗?
    【解决方案2】:

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

    Good documentation on Restlet Routing

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-18
      • 2018-01-29
      • 1970-01-01
      • 2021-11-15
      相关资源
      最近更新 更多