вызов urlrewrite из кода - PullRequest
2 голосов
/ 18 июня 2011

У меня есть URL-адрес в виде строки, и я хочу вызвать код asp.net (модуль IIS7), который переписывает URL-адреса по пути в мое приложение и получает переписанный URL-адрес из него:

http://webserver/nice/url/youHaveThere

до

http://webserver/app/Default.aspx?category=nice&catalog=url&pageid=youHaveThere

Я хочу вызвать эту функцию из приложения asp.net.Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 22 июня 2011

Не думаю, что вы назовете «правило переписывания». Вместо этого вы просто используете Regex Replace. Может быть что-то вроде:

string nice_url = "http://webserver/nice/url/youHaveThere"
string new_url = Regex.Replace(nice_url, @"/(?<category>\w+)/(?<catalog>\w+)/(?<pageid>\w+)$", "app/Default.aspx?category=${category}&catalog=${catalog}&pageid=${pageid}");
0 голосов
/ 22 июня 2011

Я предполагаю, что у вас уже установлен модуль на вашем сервере, и вы просто спрашиваете об определении определенного правила. Это , где вы можете прочитать все, что вам нужно о создании правил.

Все правила создаются с помощью регулярных выражений, а не моей сильной стороны.Но это пример формата:

<rewrite>
  <rules>
    <rule name="Rewrite to article.aspx">
      <match url="^article/([0-9]+)/([_0-9a-z-]+)" />
      <action type="Rewrite" url="article.aspx?id={R:1}&amp;title={R:2}" />
    </rule>
  </rules>
</rewrite>

(([0-9] +) обозначает только шаблоны чисел, ([_0-9a-z -] +) обозначает текст и число.Я думаю, это сработает для того, к чему вы привязываете:

<rewrite>
  <rules>
    <rule name="Rewrite to Default.aspx">
      <match url="^article/([_0-9a-z-]+)/([_0-9a-z-]+)/([_0-9a-z-]+)" />
      <action type="Rewrite" url="app/Default.aspx?category={R:1}&catalog={R:2}&pageid={R:3}" />
    </rule>
  </rules>
</rewrite>
...