2008-09-29 11 views
3

Utilisation de Restlet J'avais besoin de fournir du contenu statique simple dans le même contexte que mon service Web. J'ai configuré le composant avec un Directory, mais dans les tests, je l'ai trouvé ne servira « index.html », tout le reste des résultats dans un 404.Restlet - restauration du contenu statique

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

Alors ... http://service et http://service/index.html à la fois travail,

mais http://service/other.html me donne un 404

quelqu'un peut-il faire la lumière à ce sujet? Je veux que tout fichier dans le répertoire ./content soit disponible. PS: J'ai finalement l'intention d'utiliser un proxy inverse et de servir tout le contenu statique d'un autre serveur web, mais pour l'instant j'ai besoin que cela fonctionne tel quel.

Répondre

2

Eh bien, j'ai compris le problème. En fait, Restlet semble router les requêtes en fonction du préfixe, mais ne gère pas correctement le préfixe de correspondance le plus long. Il semble également ignorer les extensions de fichier. Par exemple, si j'avais une ressource attachée à "/ other" ... et un répertoire sur "/". Et je demande /other.html, ce qui se passe réellement, c'est que je reçois la ressource "/ other". (L'extension est ignorée?), Et pas le fichier statique du répertoire comme je m'attendais.

Si Aynone sait pourquoi c'est, ou comment le changer, j'aimerais savoir. Ce n'est pas un gros problème, juste pour tester. Je pense que nous mettrons apache ou nginx devant tout cela en production.

+2

Avez-vous obtenu la réponse? – Shah

2

Les routeurs de Restlet utilisent par défaut le mode de correspondance "Template.MODE_STARTS_WITH". Vous pouvez toujours définir le routeur par défaut en utilisant router.setMatchingMode (Template.MODE_EQUALS). Cela activera la mise en correspondance stricte par défaut pour l'attachement. Vous pouvez choisir de remplacer des itinéraires individuels avec setMatchingMode.

Good documentation on Restlet Routing