微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – 无法通过快速路由提供静态文件,也不能提供尾部斜杠

我想要一个名为’main’的路由,它将提供静态文件

app.use('/main',express.static(__dirname+'/public'));

但是当我做:

http://my.site.dev/main

CSS和JS文件不会下载,因为它试图让它们

http://my.site.dev/css/styles.css

应该从以下文件获取文件

http://my.site.dev/main/css/styles.css

但是,如果我使用尾部斜杠访问我的网站:

http://my.site.dev/main/

所有文件都可以正常使用

任何想法为什么没有一个尾随的斜杠混乱资源像CSS和JS进来?

解决方法

这是一个http问题,而不仅仅是一个与Express相关的挑战.问题在以下讨论:

> Relative URLs and trailing slashes
> http://www.bizcoder.com/the-mystery-of-the-trailing-slash-and-the-relative-url

如果你的URL是/ main,你的相对URL是css / style.css,它将解析为/css/style.css;但是如果您的URL是/ main /,则相关URL解析为/main/css/style.css.

处理这个问题的策略是重定向添加尾部斜杠.喜欢这样在快递:

app.all(/^\/main$/,function(req,res) { res.redirect('/main/'); });
app.use('/main/',express.static(__dirname+'/public'));

要么:

app.enable('strict routing');
app.all('/main',express.static(__dirname+'/public'));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐