2012-09-21 103 views
2

我有一个ASP.NET 4环境(Windows 7上的IIS 7.5)托管的WCF Web服务,我想使用URL重写/重定向。 我需要这样做的原因是因为我无法更改某些移动设备代码来插入参数。IIS 7 URL重定向基于URL路径

这里是我想要的网址:

http://server.test.com/VirtualDirectory/theOrganization/RequestService.svc/REST/GetIssueTypes

真正的网址是:

http://server.test.com/VirtualDirectory/RequestService.svc/REST/GetIssueTypes?organization=theOrganization

通知我要怎么删除theOrganization和附加i t重定向到查询字符串。

<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 URL Rewrite,并且我做了一个简单的规则并且它工作正常。

但是,当我使用浏览器尝试它时,它无法重定向并导致404错误。我希望IIS重写专家能够参与进来,因为我相当新。

谢谢!

回答

0

我在测试服务器上用iis 7.5和url rewrite 2.0测试了你的规则,规则正在工作,但是你的正则表达式匹配你想要的url和真实的url。

所以,你最终用双重定向

我想你想你的模式是这样的

(。+?)/ VirtualDirectory /(.+)/ RequestService.svc /( +)

希望这有助于。