Использование модуля перезаписи IIS7 и базы данных - PullRequest
4 голосов
/ 16 июля 2010

Моя компания перешла со старого веб-сайта на новый, и у нас есть несколько старых страниц с такими 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, но есть очень много, я бы предпочел сделать это в базе данных.Мне удалось частично успешно переключиться на базу данных, используя статью 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 голос
/ 16 июля 2010

URL-адрес, совпадающий в теге, не включает строку запроса, и поэтому вы не увидите его в своем R: 1, вы должны иметь возможность изменить свое состояние так:

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