使用IIS7的重写模块和数据库

时间:2010-07-15 21:03:27

标签: iis-7 url-rewriting mod-rewrite

我的公司从旧网站转换为新网站,我们有一堆旧网页,网址如下:

  • 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

这些网址需要分别转到这些网页:

  • www.example.com/ProductA
  • www.example.com/ProductB?utm_source=Foo
  • www.example.com/ProductC?utm_source=Foo

我可以通过在我的web.config中使用它来实现这一点,但有很多我宁愿在数据库中这样做。我已经能够使用文章http://learn.iis.net/page.aspx/803/using-custom-rewrite-providers-with-url-rewrite-module/部分成功切换到数据库。

我的问题是我最初的所有示例都重定向到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>  

1 个答案:

答案 0 :(得分:1)

标签中匹配的网址不包含查询字符串,这就是您在R:1中看不到它的原因,您应该可以将条件更改为:

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