IIS中实现从根域名https://my.site.nl重定向到/site目录的方法
IIS根目录重定向至/site文件夹的解决方案
为什么你之前的配置没生效
你添加的httpRedirect配置里,childOnly="true"参数会让重定向只对子目录的请求生效,根目录(https://my.site.nl)的请求不会触发这个规则,所以没效果。
两种可行的解决方法
方法一:修改httpRedirect配置(适合不需要保留/webservice访问的场景)
直接移除childOnly="true",调整后的配置如下:
<httpRedirect enabled="true" destination="https://my.site.nl/site/" httpResponseStatus="Permanent" />
注意:这个配置会将所有请求(包括/webservice)都重定向到/site,如果需要保留/webservice的正常访问,不要用这个方法。
方法二:使用URL Rewrite规则(灵活适配场景)
在根目录web.config的<system.webServer>节点下添加以下URL Rewrite规则,这种方式只会重定向根目录请求,不会影响/webservice或/site内部的请求:
<rewrite> <rules> <!-- 匹配根目录空路径,重定向到/site --> <rule name="Root to Site Redirect" stopProcessing="true"> <match url="^$" /> <action type="Redirect" url="/site/" redirectType="Permanent" /> </rule> <!-- 可选:仅当请求主机是my.site.nl时才触发重定向(避免多域名场景误触发) --> <rule name="Specific Domain Root Redirect" stopProcessing="true"> <match url="^$" /> <conditions> <add input="{HTTP_HOST}" pattern="^my\.site\.nl$" /> </conditions> <action type="Redirect" url="/site/" redirectType="Permanent" /> </rule> </rules> </rewrite>
额外检查点
- 如果使用URL Rewrite方法,确保你的IIS服务器已经安装了URL Rewrite模块
- 检查web.config中已有规则(比如HTTPS重定向)的顺序,新规则放在已有规则前后都可以,但要保证
stopProcessing="true"设置正确 - 测试前清空浏览器缓存,因为永久重定向(301)会被浏览器缓存,可能导致测试结果不准确
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

