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

4
我的公司从旧网站转换到了新网站,我们有许多旧页面的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中使用来实现,但是由于有很多这样的URL,我更喜欢在数据库中进行操作。我已经成功地部分切换到了数据库,使用了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个回答

1

<a> 标签中匹配的 URL 不包括查询字符串,这就是为什么您在 R:1 中看不到它的原因。您应该能够将条件更改为类似以下内容:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接