我有MyWebSite和MyApp,如下所示:
MyWebSite
web.config
MyApp
web.config
Pages
page.aspx
我希望下一个网址有效: www.mywebsite.com/oldpage.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 :(得分: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已启动并正常运行。)