Frage

Mit Restlet Ich brauchte einige einfache statische Inhalte im gleichen Kontext wie meine Web-Service zu dienen. Ich habe die Komponente mit einem Directory konfiguriert, aber in Tests, habe ich es nur auf ‚index.html‘, alles andere führt zu einer 404.

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

So ... http: // Service und http: //service/index.html beide arbeiten,

http: //service/other.html gibt mir eine 404

Kann jemand etwas Licht in diese? Ich möchte jede Datei innerhalb des ./content Verzeichnis zur Verfügung stehen.

PS:. Ich plane schließlich eine Reverse-Proxy zu verwenden und diene alle statischen Inhalten einer anderen Web-Server ab, aber jetzt muß ich dies als arbeiten

War es hilfreich?

Lösung

Nun, dachte ich, das Problem aus. Eigentlich, um Anfragen Restlet erscheint basierend auf Präfix, aber nicht längsten passenden Präfix korrekt verarbeiten, wie es scheint auch Dateiendung zu ignorieren.

So zum Beispiel, wenn ich eine Ressource habe an „/ andere“ ... und ein Verzeichnis auf „/“. Und ich ersuche /other.html, was tatsächlich passiert ist, ich die „/ andere“ Ressource erhalten. (Die Erweiterung wird ignoriert?) Und nicht die statische Datei aus dem Verzeichnis, wie ich erwarten würde.

Wenn aynone weiß, warum dies so ist, oder wie man es ändern, ich würde gerne wissen. Es ist keine große Sache, nur zum Testen. Ich denke, wir werden auf jeden Fall Apache oder nginx vor diesem in der Produktion werden setzen.

Andere Tipps

Router in Restlet verwendet standardmäßig den „Template.MODE_STARTS_WITH“ passenden Modus. Sie können immer den Router Standardeinstellung von router.setMatchingMode (Template.MODE_EQUALS) zu tun. Dies wird sich auf strenge Prüfung standardmäßig für befestigen. Sie können wählen, einzelne Strecken mit setMatchingMode außer Kraft zu setzen.

Eine gute Dokumentation auf Restlet Routing

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top