2010-07-15 62 views
4

我公司从一个旧的网站转换成一个新的,我们有一个网址,一帮老页面是这样的:使用IIS7的重写模块和数据库

  • www.example.com?foo.aspx
  • www.example.com?foo.aspx?ID=B & utm_source =富
  • www.example.com?foo.aspx?ID=C & utm_source =富

这些网址都需要去分别到这些页面:

  • 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

是在标签匹配不包括查询字符串的URL,这就是为什么你不会看到它在你的R:1,你应该能够改变你的情况是这样的:

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

工作,谢谢! – 2010-07-22 18:21:44