aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--page/http.go20
-rw-r--r--page/page.go6
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