I would love to understand better how Ktor is handling the routing for static content. I have the following hierarchy in my static folder (working directory):
I tried reproducing it locally and made it work with two different approaches.
file("*", "index.html") // single star will only resolve the first part
file("{...}", "index.html") // tailcard will match anything
val html = File("index.html").readText()
get("{...}") {
call.respondText(html, ContentType.Text.Html)
}
The {...}
is a tailcard and matches any request that hasn't been matched yet.
Documentation available here: http://ktor.io/features/routing.html#path
Edit: For resources I made the following work:
fun Route.staticContent() {
static {
resource("/", "index.html")
resource("*", "index.html")
static("static") {
resources("static")
}
}
}
I can't see your static files in the repository, so here is what it looks like in my project: