iis7.0 asp.net 如何实现url重写成html网页,使用 IIS 的 URL 重写来实现替换 URL 中的“?&”为“&”...

当我们用 ASP.NET Web API 作服务端接口时,如果客户端以 GET 方式请求的 URL 中,由于拼接错误导致“?”和“&”并列出现,会发生 400 Bad Request,那么需要在 IIS 中使用 URL 重写模块来纠正。

请求 URL 如:http://www.abc.com/api/obj?&foo=bar

需要重写为:http://www.abc.com/api/obj?foo=bar

打开 IIS 管理器中对应网站的 URL 重写,

20fcbe1453131aa46c1380460b3beb75.png

添加空白规则。

匹配的 URL 不包含域名,如上述 URL 则匹配的范围是:api/obj

不包含我们要查找的字符串 ?&,所以此处模式只能匹配所有:.*

又因为重定向路径中需要包含这部分,所以用括号包裹,即:(.*)

87708c4214177eb27924df340878ec04.png

继续添加条件匹配:

条件输入:{QUERY_STRING},表示匹配查询字符串,

匹配的部分是“?”后面的字符串:&foo=bar

那么可以填写模式:^\&.*

因为 & 后面的部分仍然需要使用,所以用括号包裹:^\&(.*)

b6d7d6ebef3de2b608288f630bb7f9f5.png

“操作”中选择类型“重定向”,URL 填写:{R:1}?{C:1}

其中 {R:1} 指代 api/obj,{C:1} 指代 foo=bar

取消“附加查询字符串”前面的勾

重定向类型在测试时可以选择 302 或 307,没问题后选择 301。

c1c645a7a598c3005c5617f902a0c47d.png

完成。

最终我们可以在网站的配置文件 web.config 中看到:

我们要把这段代码复制到开发环境源代码的 web.config 中,以免发布网站时将我们设置好的配置覆盖掉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值