IIS7部署WebApp后静态资源404 如何移除URL中的项目别名前缀
问题根因
你将WebApp配置为了IIS父站点下的子应用,别名为含空格的Project Name(URL中转义为%20,你提到的%Name应为输入笔误)。页面内资源引用默认使用相对于站点根的绝对路径时,IIS会自动补全子应用别名作为路径前缀,导致实际请求路径和资源存放路径不匹配,返回404错误。
适配IIS 7版本的解决方案
方案1:调整IIS站点配置(优先推荐,无需修改业务代码)
- 移除现有子应用配置:选中你之前转换的
Project Name应用,右键选择移除 - 修改父站点物理路径:选中新建的父站点,右键→基本设置,将物理路径直接指向你的WebApp根目录,即
C:\WebProjects\PublishedApp\Project Portal\Project Name - 重启站点后直接通过
192.169.100.20访问即可,所有资源路径不会再自动补全子应用前缀
方案2:配置IIS URL重写规则(保留子应用结构时使用)
- 先安装IIS 7对应的URL Rewrite模块,安装完成后重启IIS管理器
- 进入
Project Name子应用的功能视图,打开URL重写功能 - 点击右侧添加规则,选择空白规则,按以下参数配置:
- 规则名称:
移除子应用前缀 - 匹配URL:请求的URL选择与模式匹配,使用通配符,模式填
Project Name/* - 操作类型:重写,重写URL填
{R:1} - 勾选追加查询字符串,点击应用
- 规则名称:
- 重启子应用后资源请求会自动去除前缀
方案3:修改前端资源引用路径(无需调整IIS配置)
将页面内所有静态资源引用的绝对路径改为相对路径,或添加base标签指定根路径:
- 原绝对路径写法:
<link rel="stylesheet" href="/StylesFolder/filename.css"> - 改为相对路径写法:
<link rel="stylesheet" href="StylesFolder/filename.css"> - 也可以直接在index.html的head标签内添加base标签固定根路径:
<base href="/">
内容的提问来源于stack exchange,提问作者User1899289003
相关产品推荐
相关产品推荐

