2008-09-29 5 views
3

Restlet 사용 웹 서비스와 동일한 컨텍스트에서 간단한 정적 컨텐츠를 제공해야했습니다. 나는 Directory과 구성 요소를 구성했지만, 테스트, 나는 그것이 단지 404Restlet - 정적 컨텐츠 제공

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

그래서 ... http://servicehttp://service/index.html 모두에서 'index.html을'역할을 모두 다른 결과 것입니다 발견했습니다 작품은

하지만 http://service/other.html 나에게 이것에 404

사람이 있나 약간의 빛을 준다? ./content 디렉토리 내의 파일을 사용 가능하게하고 싶습니다.

추신 : 나는 결국 리버스 프록시를 사용하고 다른 웹 서버에서 모든 정적 컨텐츠를 제공 할 계획이지만 현재로서는 이것이 작동하도록해야합니다.

답변

2

글쎄, 나는이 문제를 알아 냈다. 사실 Restlet은 접두사를 기반으로 요청을 라우팅하는 것으로 나타나지만 가장 긴 일치하는 접두사를 올바르게 처리하지 못합니다. 또한 파일 확장명을 무시하는 것으로 보입니다.

예를 들어 리소스가 "/ other"...에 연결되어 있고 "/"에있는 디렉터리가있는 경우 그리고 /other.html을 요청합니다. 실제로 "/ other"리소스를 얻습니다. (확장은 무시됩니까?) 기대했던대로 디렉토리의 정적 파일이 아닙니다.

aynone이 왜 이것이거나 변경하는 방법을 알고 있다면, 알고 싶습니다. 그것은 큰 문제가 아닙니다. 단지 테스트 용입니다. 어쨌든 우리는이 제품 앞에서 아파치 나 nginx를 넣을 것입니다.

+2

당신은 그것에 대한 답을 얻었 는가? – Shah

2

Restlet의 라우터는 기본적으로 "Template.MODE_STARTS_WITH"일치 모드를 사용합니다. router.setMatchingMode (Template.MODE_EQUALS)를 사용하여 언제든지 라우터 기본값을 설정할 수 있습니다. 이렇게하면 연결에 대해 기본적으로 엄격한 일치가 설정됩니다. setMatchingMode를 사용하여 개별 경로를 재정의하도록 선택할 수 있습니다.

Good documentation on Restlet Routing

관련 문제