【问题标题】:Relative paths for a 404 page served with ExpressExpress 提供的 404 页面的相对路径
【发布时间】:2016-05-04 02:46:13
【问题描述】:

我正在使用 Express 提供 404 页面:

server.use(function(req, res, next) {
  res.status(404).sendFile('404.html', { root: __dirname + BASE })
})

404.html 位于网站的根目录中,如果我尝试在根目录打开一个不存在的页面,一切都会完美无缺 (http://mywebsite.com/asd)。

问题是当我尝试在其他文件夹 (http://mywebsite.com/asd/asd) 中打开页面时。我的 cssjs 的路径不受尊重: <link href="dist/bundle.min.css" rel="stylesheet">

如何解决这个路径相关的问题?在生产服务器上使用sendFile 提供页面是否安全?

【问题讨论】:

  • 我会说路径受到尊重,只是它们不正确。

标签: node.js express


【解决方案1】:

我相信您需要在 href 链接前面加上一个正斜杠:

<link href="/dist/bundle.min.css" rel="stylesheet">

因为/ 被解释为主机名的根:

  • dist/bundle.min.css 是相对于路径的。
  • /dist/bundle.min.css 相对于根。

编辑:对。如果您指定基数,则根将设置为该基数。 :)

【讨论】:

  • 当我在本地主机模式下运行应用程序时,/dist 似乎试图搜索项目根目录(我保存 gulpfile.js 和 package.json 的文件夹)中的文件!
  • 它应该解析为http://mywebsite.com/dist/bundle.min.csslocalhost:port/dist/bundle.min.css。第一个正斜杠表示它基于根。见:stackoverflow.com/a/21828923/5812121stackoverflow.com/a/10659501/5812121
  • 您的回答是正确的,谢谢!我的错误还在于声明 BASE 来启动服务器! server.use(BASE, express.static(__dirname + BASE, { extensions: ['html'] }))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-13
  • 2013-04-25
  • 2019-04-27
  • 1970-01-01
  • 2022-11-01
  • 1970-01-01
相关资源
最近更新 更多