Angular项目部署至IIS非根路径后加载失败的解决咨询
解决Angular部署到IIS子应用路径错误的方案
这个问题我碰到过好多次啦,本质是Angular默认认为自己部署在网站根目录,不知道你把它放在了/MyProject这个子应用路径下,所以请求资源时自动省略了这个前缀。给你几个靠谱的解决办法:
方法一:构建时直接指定基础路径
最直接的方式就是在ng build命令里加上--base-href参数,明确告知Angular它的根路径:
ng build --base-href "/MyProject/"
执行这个命令后,构建产物里的index.html会自动生成<base href="/MyProject/">标签,所有后续资源请求都会自动带上这个前缀,路径错误的问题就能解决。
方法二:修改项目配置文件(angular.json)
如果你不想每次构建都手动加参数,可以直接在项目配置里固化这个设置:
找到angular.json中projects -> 你的项目名 -> architect -> build -> options节点,添加"baseHref": "/MyProject/"配置,示例如下:
"options": { "baseHref": "/MyProject/", // 其他原有配置... }
之后直接运行ng build,构建产物会自动使用这个根路径。
方法三:手动修改已构建产物的index.html
如果已经完成构建但没设置路径,也可以临时修改dist目录下的index.html:
找到原有<base href="/">这一行,修改为:
<base href="/MyProject/">
⚠️ 注意:这个方法是临时方案,下次重新构建时会被覆盖,更推荐前两种方法。
另外补充个小细节:IIS这边转换为应用程序时,要确保应用程序池选择无托管代码的类型(因为Angular是静态前端资源),且物理路径准确指向你复制过去的Angular构建产物目录,不要指向父目录哦。
内容的提问来源于stack exchange,提问作者sashoalm
相关产品推荐
相关产品推荐

