3

I'm trying to implement a simple wiki as depicted here => https://golang.org/doc/articles/wiki/

I know this has been asked several times, but I can't get the static content to load in my code. It's stupid, I followed the instructions which let's me add a handler for static content but the CSS still does not get used in the html file.

I added the handlers like this:

http.Handle("tmp/css", http.StripPrefix("tmp/css", http.FileServer(http.Dir("tmp/css"))))
http.Handle("tmp/img", http.StripPrefix("tmp/img", http.FileServer(http.Dir("tmp/img"))))

The whole code can be seen here, on my github page => https://github.com/Skarlso/goprojects/tree/master/golangwiki

Thanks for the help! Gergely.

Hannibal
  • 1,078
  • 2
  • 12
  • 24
  • 2
    Please read: [404 page not found - Go rendering css file](http://stackoverflow.com/questions/28293452/404-page-not-found-go-rendering-css-file) and [Why do I need to use http.StripPrefix to access my static files?](http://stackoverflow.com/questions/27945310/why-do-i-need-to-use-http-stripprefix-to-access-my-static-files). Also note that your pages are availabe under `/edit/` and `/view/`, but the HTML templates refer to _relative_ css urls (so e.g. it will mean `/view/css/styles.css` - **not** what you want!). – icza Sep 15 '15 at 07:31
  • Damn. :) Why not put this as an answer @icza? I would have accepted it. :) Also, thanks. I did not find these questions. I should have looked harder. :/ – Hannibal Sep 15 '15 at 07:35

1 Answers1

5

Since you use relative paths (e.g. http.Dir("tmp/css"), it is important how (from which folder) you start your app.

Please read: 404 page not found - Go rendering css file and Why do I need to use http.StripPrefix to access my static files? for more details.

Also note that your pages are available under /edit/ and /view/, but the HTML templates include CSS resources using relative urls:

<link rel="stylesheet" href="css/styles.css">

So e.g. the result will be /view/css/styles.css - not what you want!

Community
  • 1
  • 1
icza
  • 389,944
  • 63
  • 907
  • 827
  • Thanks, it's working perfectly. Had to handle /view/css/ of course. Though I wonder if there is a better way of doing it rather than serving static content in order for a simple CSS and an IMG to be loaded?! – Hannibal Sep 15 '15 at 09:57
  • @Hannibal You could embed small resources in the Go app itself, see [What's the best way to bundle static resources in a Go program?](http://stackoverflow.com/a/28071360/1705598) – icza Sep 15 '15 at 11:01