【问题标题】:Using IIS7's Rewrite Module and a database使用 IIS7 的重写模块和数据库
【发布时间】:2011-03-16 15:52:50
【问题描述】:

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

  • 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>  

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-03-06
      • 2012-03-25
      • 1970-01-01
      • 2010-11-06
      • 2010-12-18
      • 2010-10-29
      • 1970-01-01
      • 2011-06-28
      • 1970-01-01
      相关资源
      最近更新 更多