diff options
| -rw-r--r-- | page/http.go | 20 | ||||
| -rw-r--r-- | page/page.go | 6 |
2 files changed, 21 insertions, 5 deletions
diff --git a/page/http.go b/page/http.go index acf9147..98546f6 100644 --- a/page/http.go +++ b/page/http.go @@ -4,6 +4,7 @@ import ( "log" "net/http" "path/filepath" + "strings" ) func SetupHandlers() { @@ -22,9 +23,22 @@ func PageHandler(w http.ResponseWriter, r *http.Request) { p := &Page{Name: u} err := p.Render(w) if err != nil { - log.Println(err) - http.Error(w, "Internal server error", 500) - return + if strings.HasSuffix(err.Error(), "no such file or directory") { + log.Printf("Page '%s' not found, trying 404", p.Name) + p.Name = "404" + w.WriteHeader(404) + err := p.Render(w) + if err != nil { + log.Println(err) + http.Error(w, "Internal server error", 500) + return + } + return + } else { + log.Println(err) + http.Error(w, "Internal server error", 500) + return + } } } diff --git a/page/page.go b/page/page.go index 83e3c9e..f5a296c 100644 --- a/page/page.go +++ b/page/page.go @@ -60,9 +60,11 @@ func (p *Page) readYaml() error { } func (p *Page) readMarkdown() error { - b, err := ioutil.ReadFile(p.Name + ".md") + pth := p.Name + ".md" + b, err := ioutil.ReadFile(pth) if err != nil { - return err + return fmt.Errorf("Error while reading markdown for path %s: %v", + pth, err) } p.Body = string(blackfriday.Run(b)) return nil |
