Iis 7 使用IIS7';s重写模块和一个数据库

Iis 7 使用IIS7';s重写模块和一个数据库,iis-7,url-rewriting,mod-rewrite,Iis 7,Url Rewriting,Mod Rewrite,我的公司从一个旧网站转换为一个新网站,我们有一堆带有URL的旧网页,如下所示: www.example.com?foo.aspx www.example.com?foo.aspx?ID=B&utm_source=foo www.example.com?foo.aspx?ID=C&utm_source=foo 这些URL需要分别转到以下页面: www.example.com/ProductA www.example.com/ProductB?utm_source=Foo www.exampl

我的公司从一个旧网站转换为一个新网站,我们有一堆带有URL的旧网页,如下所示:

  • www.example.com?foo.aspx
  • www.example.com?foo.aspx?ID=B&utm_source=foo
  • www.example.com?foo.aspx?ID=C&utm_source=foo
这些URL需要分别转到以下页面:

  • www.example.com/ProductA
  • www.example.com/ProductB?utm_source=Foo
  • www.example.com/ProductC?utm_source=Foo
我可以通过在我的web.config中使用来实现这一点,但我更愿意在数据库中使用。我已经能够使用本文部分成功地切换到数据库

我的问题是,我最初的所有示例都重定向到www.example.com/ProductA。这就好像他们忽略了查询字符串一样。你知道怎么解决这个问题吗?我的配置文件中的规则是:

<rule name="DbProviderTest" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
    <add input="{DB:{R:1}}" pattern="(.+)" />
    </conditions>
    <action type="Redirect" url="{C:1}" appendQueryString="false" />
</rule>  

标记中匹配的URL不包括查询字符串,这就是为什么您在R:1中看不到它的原因,您应该能够将您的条件更改为:

<add input="{DB:{R:1}?{QUERY_STRING}}" pattern="(.+)" />