문제

Restlet을 사용하여 웹 서비스와 동일한 컨텍스트에서 간단한 정적 콘텐츠를 제공해야했습니다. 구성 요소를 a로 구성했습니다 Directory, 그러나 테스트에서 나는 그것이 'index.html'만 제공한다는 것을 알았으며, 다른 모든 것은 404로 발생합니다.

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

그래서... http : // 서비스 그리고 http : //service/index.html 둘 다 일,

하지만 http : //service/other.html 나에게 404를 준다

누구든지 이것에 대해 약간의 빛을 발할 수 있습니까? ./content 디렉토리 내의 모든 파일을 사용할 수 있기를 원합니다.

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

도움이 되었습니까?

해결책

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

예를 들어, "/기타"에 첨부 된 리소스가 있고 "/"의 디렉토리가있는 경우. 그리고 나는 /other.html을 요청합니다. 실제로 일어나는 일은 " /기타"리소스를 얻는 것입니다. (확장자는 무시됩니까?), 예상대로 디렉토리의 정적 파일이 아닙니다.

Aynone이 이것이 이유 또는 변경 방법을 알고 있다면 알고 싶습니다. 테스트를 위해서는 큰 문제가 아닙니다. 어쨌든 Apache 또는 Nginx를 생산에 넣을 것이라고 생각합니다.

다른 팁

Restlet의 라우터 기본적으로 "template.mode_starts_with"일치 모드를 사용하십시오. Router.setMatchingMode (template.mode_equals)를 수행하여 항상 라우터 기본값을 설정할 수 있습니다. 첨부에 대한 기본적으로 엄격한 일치가 켜집니다. SetMatchingMode로 개별 경로를 무시하도록 선택할 수 있습니다.

Restlet 라우팅에 대한 좋은 문서

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top