今天碰到一个新需求,要在一个老项目上添加一个子项目
假设老项目是www.love614.live,名为A
现在要使www.love614.live/B可以访问子项目B。
一共分两步:
1.B项目的公共路径需要修改为相对路径(指的是index.html引用的资源路径)。
通常前端项目的公共路径是绝对路径,比如:
需要改为:
因为你的nginx配置根目录是A的目录,所以B还是使用绝对路径的话,加载B的资源的时候,nginx会去A的目录了找,自然是找不到的。
这里只要修改打包配置,把公共路径"/"改成“./”就可以了。
2.nginx添加子项目B的配置,我的配置如下:
location /B{
root /home/ubuntu; try_files $uri $uri/ /home/ubuntu/B/index.html;
location ~ .*\.(js|css)?$
{
expires 12h;
error_log off;
access_log /dev/null;
}
}
至于为什么要加 location ~ .*\.(js|css)?$
如果你的nginx原本有这个配置,那location /B里不加上会导致B项目在加载资源的时候,还是会去A的目录寻找。
我也不太懂这是为啥,nginx了解的不是很多,不过好在这样能解决问题。