Express 发送带参数的静态 html 文件时路径不正确

Posted

技术标签:

【中文标题】Express 发送带参数的静态 html 文件时路径不正确【英文标题】:Path is not correct when Express sends Static html file with parameters 【发布时间】:2016-07-07 00:52:14 【问题描述】:

如果这个问题在其他地方得到回答,我很抱歉。

当 url 包含参数时,我想发送静态 html 文件。 例如,http://localhost:3000/detail.html/1,但路径类型搞砸了。 这是我的问题, 我使用了 app.use(express.static(path.join(__dirname, 'public')));对于所有不带参数的静态文件请求, 对于这个http://localhost:3000/detail.html/:id 请求,我使用了

app.get('/detail.html/:id', function(req, res)
var options = 
root: __dirname + '/public/'


;

 res.sendFile(  'detail.html',options);
);

我可以在浏览器中获取detail.html页面,但是我所有的css链接和图片src in detail.html都是相对的,请求变成了这样:/detail.html/css/custom.css而不是 只是 /css/custom.css。

我的文件结构是所有html文件都在public文件夹中,css文件在public/css文件夹中。

我哪里错了? 应该如何解决这个问题? 谢谢!

【问题讨论】:

【参考方案1】:

您可以将您的 detail.html 重命名为 index.html 并在您的 expressjs 代码中添加一个路由,

app.get('/', function (req, res) 
  res.sendfile('__dirname + '/public/' + index.html);
)

然后,您的 url 中将没有 html 静态文件,一切都会正常工作

【讨论】:

以上是关于Express 发送带参数的静态 html 文件时路径不正确的主要内容,如果未能解决你的问题,请参考以下文章

动态搭建静态网站

一文学会 express

基于Nginx+PHP实现的带权限验证的静态文件服务器,如某些情景需要校验参数后才能返回资源,或者缩略图生成等。

3 ~ express ~ 静态文件托管

java代码发送post请求,并接收xml文件。。。 发送请求时要带参数

利用 Express 托管静态文件