Web.config中类似的重写规则问题

时间:2015-06-02 19:03:29

标签: asp.net mod-rewrite url-rewriting web-config

我的web.config中有一条规则可行。

<rule name="Guestbook Rewrite" stopProcessing="true">
<match url="(.*?)-guestbook" />
<action type="Rewrite" url="guestbook.asp?gb={R:1}" />
</rule>

当有人访问MyDomain.com/view-guestbook或MyDomain.com/sign-guestbook时,他们会转到相应的页面。

我遇到的困难是我有几页留言簿条目,所以我希望能够添加规则,以便当有人进入“view-guestbook-page-9”时,他们实际上正在获取MyDomain。 COM / guestbook.asp GB =视图&安培;页次= 9。我添加了以下规则,但是一旦我做了,我就有500个错误。我猜它要么与先前的规则冲突,要么语法不正确。

<rule name="Guestbook View Page Rewrite" stopProcessing="true">
<match url="view-guestbook-page-(.*)" />
<action type="Rewrite" url="guestbook.asp?gb=view&pagenum={R:1}" />
</rule>

我如何同时拥有两条规则或单一规则来解决这两个问题?

1 个答案:

答案 0 :(得分:0)

我明白了。我不得不在第一条规则中添加条件,不对其他规则做任何事情。 所以它看起来像这样:

<rule name="Guestbook Rewrite" stopProcessing="true">
<match url="(.*?)-guestbook" />
    <conditions>
        <add input="{REQUEST_URI}" pattern="view-guestbook-page-" negate="true" />
    </conditions>
<action type="Rewrite" url="guestbook.asp?gb={R:1}" />
</rule>

<rule name="View Guestbook Page Rewrite" stopProcessing="true">
<match url="view-guestbook-page-(.*)" /> 
<action type="Rewrite" url="guestbook.asp?PageNum={R:1}" />
</rule>