2015-09-19 88 views
2

我与express.js瞎搞,并建立了一些基本的功能,但我用从错误的地方服务,如果URL是从根长于一个目录快速静态问题。看下面的例子。快速静态服务走错了路

我正在使用正常记录的方法来使用静态。

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

并且建立了几条路线。例如。

app.get('/signup', function(req, res) { 
    res.render('signup.ejs'); 
}); 

404链接在链尾。

app.get('*', function(req, res){ 
    res.status(404).render('404'); 
}); 

如果我打的网页,例如localhost:3000或定义路线localhost:3000/login,一切都很好。即使我点击了一条未定义的路线localhost:3000/foo,我也可以正确显示所有图像。

但是如果我去一个进一步做类似localhost:3000/login/foo所有图像都失踪,我会在下面的地址浏览器控制台错误。

http://localhost:3000/login/img/site-brand.png

出现这种情况就太有多个目录定义的路由相同。

我解释快递网站上的文档,不管发生了什么叫静态图象会从根公共目录,其中包含一个JS,IMG和CSS目录提供服务的。

我的问题是,我误解了什么?我怎样才能表达总是相对于根?

回答

3

我写的整个问题,然后意识到,当我在.ejs文件已经成立了src=""标签我曾使用相对路径,不是绝对的。我并没有删除这个问题,而是决定回答它并将它发布给其他人。

因此,而不是使用src="img/my-image.png"它应该是src="/img/my-image.png"前导斜杠表示请求是相对于根而不是请求的路径。

基本web开发的东西那里。我应该第一次看到它,但它迟到了,我正在充满新的框架,这反过来又把我的小脑子里的更琐碎的东西挤掉了。