2008-09-29 126 views
3

使用Restlet我需要在與我的Web服務相同的上下文中提供一些簡單的靜態內容。我已經與Directory配置的組成部分,但在測試中,我發現它只會「的index.html」,一切的結果在404Restlet - 提供靜態內容

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

所以... http://servicehttp://service/index.html都工作,

http://service/other.html使我對這個404

任何人都可以提供一些線索?我希望./content目錄中的任何文件都可用。 PS:我最終打算使用反向代理服務器,並將所有靜態內容從另一個Web服務器上關閉,但現在我需要按照原樣工作。

回答

2

嗯,我想出了這個問題。實際上Restlet似乎是根據前綴路由請求,但不能正確處理最長的匹配前綴,它似乎也忽略文件擴展名。

因此,例如,如果我有一個資源附加到「/其他」和「/」上的目錄。我請求/other.html,實際發生的是我得到「/ other」資源。 (該擴展名被忽略?),而不是我所期望的目錄中的靜態文件。

如果aynone知道這是爲什麼,或者如何改變它,我很想知道。這不是什麼大事,只是爲了測試。無論如何,我認爲我們會在產品的前面放置apache或nginx。

+2

你得到了答案嗎? – Shah 2011-06-20 19:20:21

2

默認情況下,Restlet中的路由器使用「Template.MODE_STARTS_WITH」匹配模式。您始終可以通過執行router.setMatchingMode(Template.MODE_EQUALS)來設置路由器默認值。這將默認打開嚴格的匹配附件。您可以選擇使用setMatchingMode覆蓋單個路線。

Good documentation on Restlet Routing

相關問題