Iis
使用 URL Rewrite 更改部分 URL
我正在嘗試使用 IIS 8.0 上的 URL 重寫來重寫開發人員機器上的現有 URL。這樣做的原因是我不想更改現有(舊)程式碼。
我想要實現的是在響應流中更改以下程式碼:
<a href="http://www.foo.com/path/page.asp?a=1">Foo Page</a>
進入:
<a href="http://www.foo.localhost/path/page.asp?a=1">Foo Page</a>
但是當我嘗試時,我最終得到:
<a href="foo.localhost">Foo Page</a>
眾所周知,這不是一個非常令人滿意的結果。
那麼 - 我該如何正確地進行重寫以實現我想要做的事情?
我知道有更好的方法來做到這一點,使用應用程序變數等,但這是一個舊的解決方案,我不想過多地混淆應用程序本身。我想將更改保持在最低限度。至少開始。
我嘗試的規則如下所示:
<system.webServer> <rewrite> <outboundRules> <rule name="foo.com" enabled="true"> <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="foo.com" /> <action type="Rewrite" value="foo.localhost" /> </rule> </outboundRules> </rewrite> </system.webServer>
正則表達式會是解決這個問題的更好方法嗎?
我在另一個論壇上回答了這個問題。為了記錄,這是對那個答案的回顧。
正確的重寫如下所示:
<system.webServer> <rewrite> <outboundRules> <rule name="foo.com" enabled="true"> <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^(.*)foo.com(.*)$" /> <action type="Rewrite" value="{R:1}foo.localhost{R:2}" /> </rule> </outboundRules> </rewrite> </system.webServer>