【问题标题】:404 page not found - Go rendering css file404 页面未找到 - 去渲染 css 文件
【发布时间】:2015-04-02 07:50:13
【问题描述】:

我目前正在使用 Go。我在本地机器上创建了一个 Web 服务器。我按照此页面上的说明进行操作Rendering CSS in a Go Web Application 但我仍然收到程序似乎无法找到我的 css 文件所在位置的 404 错误。我的目录如下。

src文件夹中包含css/somefilename.csssrc也包含server/server.go

我的server.go文件里面的代码如下。

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

当我转到localhost:8080/css/ 时,我得到 404 页面未找到。我还使用模板来呈现 html 代码。模板在文件夹中

src/templates/layout.html

html代码如下:

<link rel="stylesheet" type="text/css" href="../css/css490.css" />

【问题讨论】:

  • 如果将css文件夹的完整路径放在http.FileServer(http.Dir("/full/path/of/css")中会更好吗?
  • 是的,当我使用完整路径时,它按预期工作。我唯一的抱怨是为什么它可以在我的朋友机器(mac)上使用上面的代码但是当我在我的机器(windows)上运行它时它不起作用。我们实际上有相同的 css 文件到 server.go 的文件路径
  • 仅用于测试,将"css" 替换为filepath.FromSlash(path.Clean("css") 会更好(并且适用于任何平台)?

标签: html css go http-status-code-404 go-templates


【解决方案1】:

由于您没有指定 css 文件夹的完整路径只是一个相对路径,因此是否找到您的 css 文件取决于 您运行应用程序的文件夹(工作目录,此是相对路径被解析为什么)。

例如,如果您从src 使用go run server/server.go 启动应用程序,它将起作用。如果您从带有go run server.gosrc/server 文件夹启动它,它将不起作用。此外,如果您从应用程序创建本机可执行文件并放入 bin 文件夹并从 bin 文件夹启动它,这也将不起作用,因为 css 文件夹不在 bin 文件夹中.

要么使用src 文件夹中的go run server/server.go 启动它,要么将css 文件夹复制到您的bin 文件夹并从bin 文件夹启动可执行文件,它应该可以工作(但在这种情况下,您还必须复制其他静态文件,例如 html 模板)。

【讨论】:

  • 这似乎总是让很多人绊倒。
  • 感谢您的解释。我以为我是从 src/server 运行我的文件,但我使用的是 go install server 命令,它在 bin 文件夹中创建了一个可执行文件。
猜你喜欢
  • 1970-01-01
  • 2014-08-04
  • 2015-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-29
相关资源
最近更新 更多