加入社区

订阅:www.yunweipai.com/feed

QQ群:
1群:201777608 - 运维综合
2群:526871767 - 运维综合
3群:1689067 - Linux Shell脚本

微博:weibo.com/tektea

微信:yunweipai(或扫描以下二维码)

合作伙伴

小猪动图 - GIF动图素材库_GIF在线工具

Express作为静态服务的URL路径问题

今天遇到一个问题:

  1. 我使用Express,将两个目录作为静态文件暴露给外部访问:

//product and /home/products are static html, script, jpg files
        app.use(express.static(__dirname + '/static'));
        app.use(express.static(process.cwd() + '/home/products'));
我的目录结构:
..
|
|_server.js
|
|_static/
| |
| |__product/
|
|_product/
|
|_home/products

  1. 2. 当访问/product这个URL时候,我做了处理,并不是直接访问下面的文件
  2. //product index page
  3. app.get('/product', getIndexSmapleHTML);
  4. 在indexSampleHTML中,我增加了脚本,会去向服务器请求图片,并使用jQuery插入带<img>标签的HTML元素的(img的src是相对另外一个静态目录的地址),发现找不到图片。
  5. 4. 问题是,img src所指的图片找不到。但是我另外一个URL:/pi ,也是同样的img和src,却可以访问。

刚开始我怀疑是我的img src中带中文导致的,但是 /pi 的地址可以访问,那么就不是中文的问题。

我比较两个URL,发现他们不一样:
正常访问的URL:http://localhost/7E%%9C%35/556.jpg
而有问题的URL:http://localhost/product/7E%%9C%35/556.jpg

多了一个product在路径中。

我大概明白了,http://localhost/product 是一个静态目录,那么在这个URL下的请求,都是相对于/product这个根路径的。因为我没有/pi的静态目录,所以没问题了。

所以,Express里面,在使用静态目录的时候,要注意这个特性:静态目录URL下的请求的相对URL,都是相对应于此静态目录的,而不能跳出。

我解决这个问题的方法,就是删除掉/product目录。

转载请注明:运维派 » Express作为静态服务的URL路径问题

0
3.7k
5