使用map重写规则并剥离某些参数

时间:2011-07-08 15:11:02

标签: iis iis-7 url-rewriting

我对这一切都很陌生,所以请在解释中作为基础。

我工作的地方只是更改了商店软件,因此我有一系列需要按摩的网址,Google,人等继续使用旧链接。

旧链接看起来像: http://mydoman/usedateb.aspx?User_ID=38482&Category_ID=127

我知道如何改写重写地图 http://mydomain/usedateb.aspx?Category_ID=127http://mydomain/hoopy-new-tour-name.aspx

我知道如何执行重写规则来删除User_ID = xxx&来自网址。

我的问题在于让他们两个人一起工作。我需要取出User_ID(因为它被任意分配)并通过地图发送它以更改为hoopy-new-tour-name。

我已经设置了重写规则来删除列表顶部的User和列表中较低的重写映射规则但我最终在http://mydomain/usedateb.aspx?User_ID=38482&Category_ID=127

如果有帮助,我的web.config有像

这样的行
<add key="UseDateB.aspx?Category_ID=127" value="/success.htm" />

表示地图和

<rule name="Remove extra parameters - UserID">
      <match url="(.*)User_ID=([0-9]+&amp;)(.*)" />
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
      <action type="Rewrite" url="{R:1}{R:3}" appendQueryString="false" />
</rule>

删除不需要的参数。

我需要这张地图的原因是Cat 127可能是风暴之旅,但128可能是frood之旅。有一个大约500个需要重新映射的列表但我们必须从传入的URL中获取额外的参数才能使其工作。

所有帮助表示赞赏!如果我完全错了,请告诉我。

1 个答案:

答案 0 :(得分:2)

看看这个:

         <rules>
            <clear />
            <rule name="RedirectToCategory" stopProcessing="true">
                <match url="UseDateB.aspx" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{QUERY_STRING}" pattern="Category_ID=127" />
                </conditions>
                <action type="Redirect" url="http://mydomain/hoopy-new-tour-name.aspx" />
            </rule>
            <rule name="RemoveUserID" stopProcessing="true">
                <match url="(.*)" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{QUERY_STRING}" pattern="(.*)(User_ID=[0-9]*)(.*)" />
                </conditions>
                <action type="Redirect" url="{R:0}?{C:1}{C:3}" appendQueryString="false" />
            </rule>
        </rules>

第一个规则根据类别重定向,第二个规则删除User_ID。尝试一下,如果你想做别的事情,说明它是什么。