2016-08-07 4 views
1

ich sehr einfach routing vibed zu bekommen versuche zu arbeiten: istvibed: Können Sie sich nicht Arbeit Routing

void main() 
{ 
    config = new Config(); 

    auto router = new URLRouter; 
    router.get("/*", serveStaticFiles(roothtml ~ "\\"));  

    router.get("files/*", serveStaticFiles("./files/")); 

    router.any("*", &accControl); 

    router.any("/checkAuthorization", &checkAuthorization); 
    router.any("/login", &login); 
    router.post("/logout", &logout); 

    router.any("/upload", &upload);  

    router.any("/test", &test);  
    router.any("/dbdata", &dbdata); 
    // ... 
} 

Textdatei 123.txt in Files Ordner abgelegt.

Aber wenn ich auf http://localhost:8080/Files/123.txt zugreifen bekomme ich 404 Fehler.

Was mache ich falsch?

Antwort

0

Versuchen Sie folgendes:

router.get("files/*", serveStaticFiles("./files/")); 
+0

Arbeiten Sie nicht :(http://img.ctrlv.in/img/16/08/07/57a74394bb242. png –

+0

Entfernen Sie die Catch-All Route zu Beginn! – greenify

+0

@greenify nicht helfen :(http://img.ctrlv.in/img/16/08/07/57a752cc97b82.png –

3

Mit serveStaticFiles() ein bisschen schwierig ist. Wenn URLRouter dem Anforderungspfad entspricht, leitet es die Anforderung an serveStaticFiles() weiter. Diese Funktion prüft den Anfragepfad gegen ein anderes vorkonfiguriertes Präfix. In Ihrem Fall stimmt das Präfix nicht überein und es wird keine Datei geliefert. die richtige Vorsilbe konfigurieren hilft:

auto fileServerSettings = new HTTPFileServerSettings; 
fileServerSettings.serverPathPrefix = "/files/"; 
router.get("*", serveStaticFiles("files/", fileServerSettings)); 

Es spielt keine Rolle, ob Sie "*" oder "/files/* für die Route Anpassung verwenden. Es beeinflusst nur, welche Routen an serveStaticFiles() weitergeleitet werden.

+0

also wenn ich mehrere URLs wie '/ foo''/bar' für verschiedene Ordner dienen sollte, sollte ich Erstellen Sie zwei 'fileServerSettings'-Instanzen? –

+0

Ja, weil der 'serverPathPrefix' mit dem Anfragepfad verglichen wird. –

0

Ich weiß nicht, wie Routing funktioniert, aber ich habe Arbeit nächste Variante:

router.get("/rasters_previews/*", serveStaticFiles("./files/")); 
    // url would be localhost/rasters_previews/101_005329_2_0_02.jpg 
Verwandte Themen