Iis 7 IIS7 URL重写忽略子应用程序中的规则

Iis 7 IIS7 URL重写忽略子应用程序中的规则,iis-7,url-rewriting,rewrite,Iis 7,Url Rewriting,Rewrite,我的网站和应用程序如下所示: MyWebSite web.config MyApp web.config Pages page.aspx 我希望下一个URL可以工作: www.mywebsite.com/oldpage.aspx MyWebSite\web.config添加到URL“MyApp”:www.MyWebSite.com/MyApp/page.aspx MyApp\web.config添加到URL“页面”:www.mywebsi

我的网站和应用程序如下所示:

MyWebSite
   web.config

   MyApp
      web.config
      Pages
         page.aspx
我希望下一个URL可以工作: www.mywebsite.com/oldpage.aspx

  • MyWebSite\web.config添加到URL“MyApp”:www.MyWebSite.com/MyApp/page.aspx
  • MyApp\web.config添加到URL“页面”:www.mywebsite.com/MyApp/页面/page.aspx
  • 我想把这个逻辑分为两个规则,因为我希望每个规则都对自己的部分负责。MyWebSite应该决定哪个应用程序是默认的,如果没有指定,它应该不知道MyApp中“页面”的任何信息

    问题在于,MyApp中的规则没有被调用

    问题是:我做错什么了吗?这就是我不能在单独的配置文件中执行重写的限制吗

    请注意,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>
    

    阅读以下博文,您可能会想做什么:

    然而,我成功地让它工作的唯一方法是使用肮脏的伎俩。我不确定是否建议在生产环境中使用此解决方案,但如果您希望使用此解决方案:

    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>
    
    
    
    也可以启动和运行)。

    您可以向我们展示web.config文件的相关部分吗?(定义规则的部分)@cheesemacfly:请参见更新您可以尝试使用并在此处发布结果吗?我使用了此工具。仅显示MyWebSite web.config中的规则的日志,与MyApp无关。但是MyApp web.config中的其他规则运行良好。作为测试,您能否将
    MyWebSite web.config中的
    type=“Rewrite”
    更改为
    type=“Redirect”