private func redirectHtml(_ name: String, _ response: RouterResponse) { do { response.headers["Content-Type"] = "text/html; charset=utf-8" let path = "./public/\(name).html" try response.status(.OK) .send(fileName: path) .end() } catch { Log.error("Failed to link \(name).html") } } router.get("/about") { request, response, next in redirectHtml("about", response) next() } はい、 /about への GET アクセスが来たら
![サーバサイド Swift でウェブページを運用している話 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/d6ef27b89599a067e4b2e8142b7ac4a83cdae982/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn.qiita.com%25252Fassets%25252Fpublic%25252Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFtYXpvbmF3cy5jb20lMkYwJTJGNTY0NDIlMkZwcm9maWxlLWltYWdlcyUyRjE0OTYwNDY1NzM_aXhsaWI9cmItNC4wLjAmYXI9MSUzQTEmZml0PWNyb3AmbWFzaz1lbGxpcHNlJmZtPXBuZzMyJnM9ZGI1OGM5ZmI5YzQwZDM2MDU4NzdkNWE2ZmU1MTg0Yjk%2526blend-x%253D120%2526blend-y%253D467%2526blend-w%253D82%2526blend-h%253D82%2526blend-mode%253Dnormal%2526s%253D5b1e625ee34798b1f0e26419520f5dd6%3Fixlib%3Drb-4.0.0%26w%3D1200%26fm%3Djpg%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9JUUzJTgyJUI1JUUzJTgzJUJDJUUzJTgzJTkwJUUzJTgyJUI1JUUzJTgyJUE0JUUzJTgzJTg5JTIwU3dpZnQlMjAlRTMlODElQTclRTMlODIlQTYlRTMlODIlQTclRTMlODMlOTYlRTMlODMlOUElRTMlODMlQkMlRTMlODIlQjglRTMlODIlOTIlRTklODElOEIlRTclOTQlQTglRTMlODElOTclRTMlODElQTYlRTMlODElODQlRTMlODIlOEIlRTglQTklQjEmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzNBM0MzQyZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtcGFkPTAmcz1lNjUxZjI4Njk3ODIwODVmNzhhNjJmZWE4NmZkMzNmMA%26mark-x%3D120%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBkYWljaGlybyZ0eHQtY29sb3I9JTIzM0EzQzNDJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1wYWQ9MCZzPTM2Y2M1NWFkMWIzMDA4ZTgwNmI4YTM0NjQxNGE5ZGYx%26blend-x%3D242%26blend-y%3D480%26blend-w%3D838%26blend-h%3D46%26blend-fit%3Dcrop%26blend-crop%3Dleft%252Cbottom%26blend-mode%3Dnormal%26s%3Ddf9517de381ce71df92855cd49743360)