Pregunta

Utilizando Restlet, necesitaba servir un contenido estático simple en el mismo contexto que mi servicio web. He configurado el componente con un Directory , pero en las pruebas, descubrí que solo servirá 'index.html', todo lo demás da como resultado un 404.

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

Entonces ... http: // service y http: //service/index.html ambos funcionan,

pero http: //service/other.html me da un 404

¿Alguien puede arrojar algo de luz sobre esto? Quiero que cualquier archivo dentro del directorio ./content esté disponible.

PD: Eventualmente planeo usar un proxy inverso y servir todo el contenido estático desde otro servidor web, pero por ahora necesito que funcione como está.

¿Fue útil?

Solución

Bueno, descubrí el problema. En realidad, Restlet parece enrutar solicitudes basadas en el prefijo, pero no maneja correctamente el prefijo más largo, también parece ignorar las extensiones de archivo.

Entonces, por ejemplo, si tuviera un recurso asociado a " / other " ... y un directorio en " / " ;. Y solicito /other.html, lo que realmente sucede es que obtengo el '' / otro '' recurso. (¿Se ignora la extensión?), Y no el archivo estático del directorio como cabría esperar.

Si alguien sabe por qué es esto, o cómo cambiarlo, me encantaría saberlo. No es gran cosa, solo para probar. Creo que de todos modos pondremos apache o nginx delante de esto en producción.

Otros consejos

Los enrutadores en Restlet usan de forma predeterminada la " Template.MODE_STARTS_WITH " modo a juego. Siempre puede establecer el enrutador predeterminado haciendo router.setMatchingMode (Template.MODE_EQUALS). Esto activará la coincidencia estricta de forma predeterminada para adjuntar. Puede optar por anular rutas individuales con setMatchingMode.

Buena documentación sobre Restlet Routing

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top