404 page not found - Go rendering css file
Asked Answered
A

1

2

I'm currently working in Go. I created a web server on my local machine. I followed the instruction on this page Rendering CSS in a Go Web Application but I'm still getting the 404 error that the program can't seem to find where my css file is. My directory is as follows.

In src folder contains css/somefilename.css, src also contains server/server.go.

The code inside my server.go file is as follows.

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

When I go to localhost:8080/css/ I get 404 page not found. I'm also using templates to render the html code. The templates are in the folder

src/templates/layout.html

the html code is as follows:

<link rel="stylesheet" type="text/css" href="../css/css490.css" />
Atkins answered 3/2, 2015 at 7:25 Comment(3)
Would that work better if you put the full path of the css folder in http.FileServer(http.Dir("/full/path/of/css")?Windsucking
Yes when i use the full path it works as expected. The only gripe i have is why it work on my friend machine (mac) with the code above but when i ran it on my machine (windows) it didn't work. We literally have the same file paths for the css file to the server.goAtkins
Just for testing, would replacing "css" with filepath.FromSlash(path.Clean("css") work better (and for any platform)?Windsucking
I
3

Since you don't specify full path for the css folder just a relative one, whether your css files are found depends on the folder you run your application from (the working directory, this is what relative paths are resolved to).

For example if you start your application from your src with go run server/server.go it will work. If you start it from your src/server folder with go run server.go, it will not work. Also if you create a native executable from your app which is put into the bin folder and you start that from the bin folder, this also won't work because the css folder is not in the bin folder.

Either start it with go run server/server.go from the src folder, or copy the css folder to your bin folder and start the executable from the bin folder and it should work (but in this case you also have to copy other static files like html templates).

Izaguirre answered 3/2, 2015 at 8:38 Comment(2)
This seems to trip a lot of people up - all the time.Pitsaw
Thank you for the explanation. i thought that i was running my files from src/server but i was using the command go install server which creates an executable in the bin folder.Atkins

© 2022 - 2024 — McMap. All rights reserved.