我正在尝试通过非常简单的vibed 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);
// ...
}文本文件123.txt放置在Files文件夹中。
但是当我访问http://localhost:8080/Files/123.txt时,我得到了404错误。
我做错了什么?
发布于 2016-08-08 03:57:32
使用serveStaticFiles()有点棘手。如果URLRouter与请求路径匹配,那么它会将请求转发给serveStaticFiles()。此函数根据另一个预先配置的前缀检查请求路径。在您的示例中,前缀不匹配,并且不提供任何文件。配置正确的前缀有助于:
auto fileServerSettings = new HTTPFileServerSettings;
fileServerSettings.serverPathPrefix = "/files/";
router.get("*", serveStaticFiles("files/", fileServerSettings));使用"*"或"/files/*进行路由匹配并不重要。它只影响转发到serveStaticFiles()的路由。
发布于 2016-08-07 21:40:50
试试这个:
router.get("files/*", serveStaticFiles("./files/"));发布于 2016-08-08 21:29:30
我不知道路由是如何工作的,但我得到了下一个变种的工作:
router.get("/rasters_previews/*", serveStaticFiles("./files/"));
// url would be localhost/rasters_previews/101_005329_2_0_02.jpghttps://stackoverflow.com/questions/38814599
复制相似问题