2012-03-13 123 views
0

我試着寫在我的Web應用程序都In-和出站使用IISS URLRewriter像這樣的網址:IIS URL重寫出境PostBackUrls

www.domain.net/SomeSite.aspxwww.domain.net/SomeSite使用這個正則表達式入站:

^([A-Za-z0-9]+)([\?A-Za-z0-9=&]+)?$,多出乎我的意料,這實際工作,也爲網址,如www.domain.net/SomeSite.aspx?abc=1 =>www.domain.net/SomeSite?abc=1使用此重寫操作:{R:1}.aspx?{R:2}

但如今,對出站,我想有同樣的效果,因此用戶實際看到www.domain.net/SomeSite即使我的web應用程序可能在內部引用〜/ SomeSite.aspx。

我使用下列正則表達式:

^([A-Za-z0-9]+).aspx([\?A-Za-z0-9=&#]+)?$和重寫,像這樣的網址:/{R:1}{R:2}

一般來說這個作品,唉,如果不是確實爲例如Response.Redirect在CodeBehind中執行,它也不適用於asp:Button s的PostBackUrl

有沒有人有任何想法如何重寫這個出站規則,因此它實際上捕獲每個鏈接,無論我如何引用它?

感謝,

丹尼斯

編輯:

一些例子,因爲我想我是不是很清楚,因爲我以爲:

用戶在瀏覽器www.domain.com/Login,入站規則捕獲並重定向到www.domain.com/Login.aspx,但在地址欄中顯示/Login,這種行爲很好。

但是,當我點擊即一個asp:按鈕與PostBackUrl Login.aspx地址欄將顯示Login.aspx而不是所需的Login,如何得到這種行爲?

+0

爲什麼不將PostBackUrl更改爲/ Login而不是Login.aspx?我*認爲*應該工作,至少這是我如何處理正常的錨點標記(保存出站不得不這樣做,然後!) – ianbailey 2012-03-13 16:53:45

+0

是的,這會工作,但它會是令人驚訝的不方便,因爲我需要做我在IIS上調試,而不是在開發服務器上。 – 2012-03-13 22:25:56

回答

0

事實證明,我需要做的唯一事情就是添加一個入站重定向規則,並將stopProcessing設置爲對這兩個規則均爲真。結果如下:

<rules> 
     <rule name="Clean URL" stopProcessing="true"> 
      <match url="^([A-Za-z0-9]+)([\?A-Za-z0-9#=&amp;]+)?$" /> 
      <action type="Rewrite" url="{R:1}.aspx{R:2}" /> 
     </rule> 
     <rule name="CleanTest" stopProcessing="true"> 
      <match url="^([a-z0-9/]+).aspx([a-zA-Z0-9\?#=&amp;]+)?$" /> 
      <action type="Redirect" url="{R:1}{R:2}" /> 
     </rule> 
</rules>