我有一个托管在ASP.NET 4环境中的Web (Windows7上的IIS7.5),我想使用ASP.NET重写/重定向。我之所以需要这样做,是因为我不能更改一些移动设备代码来插入参数。
下面是我想要的URL:
http://server.test.com/VirtualDirectory/theOrganization/RequestService.svc/REST/GetIssueTypes
真正的URL是:
http://server.test.com/VirtualDirectory/RequestService.svc/REST/GetIssueTypes?organization=theOrganization
请注意如何删除theOrganization并将其附加到查询字符串中以进行重定向。
<rule name="test" stopProcessing="true">
<match url="(.+\.?)/(.+)/RequestService.svc/(.+)" />
<action type="Redirect" url="{R:1}/RequestService.svc/{R:3}?organization={R:2}"
redirectType="Permanent" />
</rule>我知道写这条规则有点奇怪。以为我的正则表达式是对的。我在IIS管理器中的URL重写测试器中运行了表达式,它似乎与我想要的匹配。另外,我确实安装了IIS重写,并且我制定了一个简单的规则,它起作用了。
但是,当我使用浏览器尝试时,它无法重定向并导致404。我希望IIS重写专家能够加入进来,因为我对此相当陌生。
谢谢!
发布于 2012-11-01 22:05:08
我用iis 7.5和url重写2.0在测试服务器上测试了您的规则,该规则正在运行,但是您的regex与您想要的url和真正的url都匹配。
所以你最终会有一个双重重定向
我想你想要这样的模式
(.+.?)/VirtualDirectory/(.+)/RequestService.svc/(.+)
希望这能有所帮助。
https://stackoverflow.com/questions/12534543
复制相似问题