2013-05-20 51 views
2

我有MyWebSite和MyApp的,如下圖所示:IIS7 URL重寫忽略規則子應用

MyWebSite 
    web.config 

    MyApp 
     web.config 
     Pages 
     page.aspx 

我想下一個URL將工作: www.mywebsite.com/oldpage.aspx

  1. MyWebSite \ web.config添加到URL'MyApp':www.mywebsite.com/ MyApp /page.aspx
  2. MyApp \ web.config添加到URL'Pages':www.mywebsite.com/MyApp/Pages /page.aspx

我想在兩條規則中分開這個邏輯,因爲我希望每條規則都對它的部分負責。如果沒有指定,MyWebSite應該決定哪個應用程序是默認應用程序,並且它不應該知道MyApp中的「頁面」。

問題是MyApp中的規則沒有被調用。

問題:我做錯了什麼?這是限制,我不能執行改寫在單獨的配置文件?

P.S. MyWebSite和MyApp在相同的應用程序池下運行。


MyWebSite的web.config:

<rule name="Add 'MyWebSite' for ASPX pages"> 
    <match url="^([^/]+\.aspx)" /> 
    <action type="Rewrite" url="MyApp/{R:1}" /> 
</rule> 

MyApp的web.config文件

<rule name="Add 'Pages'"> 
    <match url=".*" /> 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
     <add input="{URL}" pattern="Pages" negate="true" /> 
    </conditions> 
    <action type="Rewrite" url="Pages/{R:0}" appendQueryString="true" /> 
</rule> 
+0

你能告訴我們web.config文件的相關部分嗎? (定義規則的部分) – cheesemacfly

+0

@cheesemacfly:參見更新 – Kamarey

+0

您可以嘗試使用[失敗的請求跟蹤工具](http://www.iis.net/learn/extensions/url-rewrite-module/using -failed-request-tracing-to-trace-rewrite-rules)並在這裏發佈結果? – cheesemacfly

回答

0

你想要做什麼,似乎可以閱讀下面的博客文章:http://www.iis.net/learn/extensions/url-rewrite-module/using-global-and-distributed-rewrite-rules

然而,我成功實現它的唯一方法是使用一個骯髒的伎倆。我不知道它會在生產環境中進行推薦,但如果你想要去與此解決方案:

MyWebSite web.config

<rule name="Add 'MyWebSite' for ASPX pages"> 
    <match url="^([^/]+\.aspx)" /> 
    <action type="Rewrite" url="http://www.mywebsite.com/MyApp/{R:1}" /> 
</rule> 

我只是改變了Rewrite目的地url="http://www.mywebsite.com/MyApp/{R:1}"(我有ARR了並運行)。