将Nginx托管的静态资源迁移至Netlify遇问题求助
优先检查Vue项目的
publicPath配置
遗留Vue CLI项目的vue.config.js里,publicPath是控制资源基础路径的核心。如果之前在Cloud Run的Nginx部署在根域名下,迁移后Netlify/S3也是根域名的话,publicPath设为"/"即可;如果是部署在子路径下,必须对应修改为子路径(比如"/legacy-app/")。绝大多数相对URL加载错误都是因为这个配置不匹配,和CNAME/静态IP无关。用浏览器DevTools定位实际请求路径
打开浏览器开发者工具的Network面板,查看报错资源的实际请求URL。比如在Vue单页应用的非根路由页面刷新时,相对路径会基于当前路由拼接(比如当前路径是/about,相对路径css/app.css会变成/about/css/app.css),这时候需要把资源路径改为绝对路径,或者在index.html的<head>里添加<base href="/">标签来统一基础路径。纠正CNAME vs静态IP的误解
域名解析用CNAME还是静态IP,不会影响浏览器对相对URL的解析逻辑。浏览器始终是基于当前页面的域名来拼接相对路径,不管后端是用CNAME还是IP解析,所以这个推测不成立,问题根源还是项目路径配置或部署结构的差异。对齐Nginx与Netlify/S3的部署目录结构
之前Cloud Run的Nginx可能配置了root /usr/share/nginx/html/dist这类规则,把dist目录作为静态资源根目录。迁移到Netlify时要在部署设置里把“发布目录”设为dist;S3则要确保把dist下的所有文件上传到Bucket根目录,或者配置静态网站托管的前缀,避免资源路径层级错误。S3静态托管的额外配置要点
若用S3托管,需在Bucket的静态网站托管设置中,将“索引文档”和“错误文档”都设为index.html(适配Vue SPA的路由跳转),同时确保Bucket的访问权限允许公开读取静态资源,否则会出现403或404错误。
内容的提问来源于stack exchange,提问作者Gary Leong

