IIS站点根URL仅重定向到子路径且不影响.NET Core API的配置方法
解决方案
前提条件
- 确保你的IIS服务器已经安装「URL重写模块」,未安装的情况下需要先完成模块安装再进行后续配置
配置方法(两种二选一即可)
方法1:直接修改根站点的web.config文件
在你托管.NET Core Web API的根站点根目录下的web.config文件中,找到<system.webServer>节点,添加以下重写规则配置:
<system.webServer> <!-- 此处保留你站点原有的其他配置 --> <rewrite> <rules> <rule name="RootRedirectToAngularApp" stopProcessing="true"> <match url="^$" /> <action type="Redirect" url="/angularapp" appendQueryString="true" redirectType="Permanent" /> </rule> </rules> </rewrite> </system.webServer>
配置说明:
match url="^$":仅匹配站点根路径http://example.com/,不会匹配任何带路径后缀的请求(包括/api/xxx、/angularapp/xxx等),天然不会影响API接口访问appendQueryString="true":会自动把根路径后的查询参数带到重定向地址,比如访问http://example.com/?id=1会重定向到http://example.com/angularapp?id=1,不需要该特性可以改为falseredirectType="Permanent":对应301永久重定向,如果是临时调试需求可以改为Temporary对应302临时重定向
提示:请确保你的Angular子应用的
index.html中base href配置为<base href="/angularapp/">,避免Angular应用的静态资源和路由出现访问异常。
方法2:IIS图形界面配置
- 打开IIS管理器,定位到托管.NET Core Web API的根站点
- 双击功能视图中的「URL重写」选项
- 点击右侧操作栏的「添加规则」,选择「空白规则」后确认
- 按以下参数填写规则:
- 名称:自定义即可,比如
根路径跳转Angular子应用 - 匹配URL区域:请求的URL选择「与模式匹配」,使用「正则表达式」,模式输入
^$ - 条件区域:无需额外添加条件(如果有其他特殊路径需要排除可以在此处添加)
- 操作区域:操作类型选择「重定向」,重定向URL输入
/angularapp,勾选「追加查询字符串」,重定向类型按需选择301/302
- 名称:自定义即可,比如
- 点击右侧操作栏的「应用」,重启站点后规则生效
规则验证
配置完成后测试:
- 访问
http://example.com/会自动跳转到http://example.com/angularapp - 访问
http://example.com/api/xyz等API接口完全不受影响,正常返回数据
内容的提问来源于stack exchange,提问作者user1066231
相关产品推荐
相关产品推荐

