2012-09-21 97 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 /( +)

希望這有助於。