IIS URL Rewrite配置问题:跳转后保留原URL
URL Rewrite配置问题排查与修正
现有配置的错误点
无效的服务器变量
{HTTPS_HOST}
IIS中不存在{HTTPS_HOST}这个服务器变量,该条件会导致规则无法正确匹配请求,需直接移除。如果需要同时匹配HTTP和HTTPS请求,仅保留{HTTP_HOST}的条件即可——{HTTP_HOST}在两种协议下都会返回请求的主机名。Rewrite动作多余的
redirectType属性redirectType是Redirect动作的专属配置,Rewrite动作不需要该属性,保留会导致规则逻辑异常,必须删除。匹配规则与转发路径的冲突
原规则match url="^(.*)$"会匹配所有请求路径,当重写到http://IP address/service时,IIS会默认将匹配到的路径追加到目标URL后,这就是地址栏出现/service(实际是页面资源请求路径错误引发的表现)的原因。
修正后的配置示例
场景1:仅根路径(http://name.domain.com)转发到目标服务
<rule name="test_rewrite" stopProcessing="true"> <match url="^$" /> <conditions> <add input="{HTTP_HOST}" pattern="^name.domain.com$" /> </conditions> <action type="Rewrite" url="http://IP address/service" /> </rule>
场景2:所有请求路径都转发到目标服务对应路径(如http://name.domain.com/path → http://IP address/service/path)
<rule name="test_rewrite" stopProcessing="true"> <match url="^(.*)$" /> <conditions> <add input="{HTTP_HOST}" pattern="^name.domain.com$" /> </conditions> <action type="Rewrite" url="http://IP address/service/{R:1}" /> </rule>
额外需要检查的设置
- 确认ARR代理的出站规则未限制对目标IP地址的访问
- 验证IIS服务器可以正常访问
http://IP address/service(可在服务器上用浏览器或curl测试连通性) - 若使用HTTPS,需确保IIS绑定了对应的SSL证书,且目标服务的HTTPS证书可被IIS信任(若目标为HTTPS)
内容的提问来源于stack exchange,提问作者Felipe F. L. dos Santos
相关产品推荐
相关产品推荐

