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 に答える