Angular应用URL路径出现异常引号问题求助
Angular部署IIS后路由出现异常引号的排查方案
- 检查构建命令的
base-href参数:确认生产构建时的命令有没有错误的引号嵌套,比如是不是写成了ng build --prod --base-href "/mywebsite/",注意这里的引号是外层的shell引号,base-href的值本身不要带额外引号,避免构建时生成的base标签被注入转义实体。 - 查看部署后的index.html源码:直接访问网站根路径,查看页面源码里的
<base>标签内容,确认是不是出现了"这类实体,比如如果是<base href="/mywebsite/"">,那问题就出在构建时的base-href配置或者IIS对静态文件的解析上。 - 检查IIS的web.config重写规则:重点看URL重写的规则中,有没有在pattern或者action节点里错误使用了未转义的引号,或者配置时不小心引入了HTML实体,导致路由跳转时被拼接进路径。比如规则里的
rewriteUrl如果包含了多余的",就会导致路由异常。 - 排查Angular路由导航逻辑:检查项目中所有路由跳转的代码(比如路由守卫、组件内的
router.navigate调用),有没有在拼接路径时误加了引号,比如模板字符串里的多余引号,或者从配置文件读取路径时带了转义实体,本地环境可能因为配置不同没触发,部署后暴露。 - 检查angular.json的生产环境配置:打开angular.json,找到
configurations.production下的baseHref配置,确认值是正确的路径(比如"/mywebsite/"),没有多余的引号或者转义字符。 - 排查IIS的HTML处理模块:如果IIS启用了HTML压缩、URL重写的附加模块,或者安装了第三方的内容处理插件,可能会错误转义base标签里的内容,尝试临时禁用这类模块测试是否解决问题。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

