UrlRewriter.net эксклюзивные правила регулярных выражений - PullRequest
0 голосов
/ 12 апреля 2011

Я пытаюсь добавить некоторые правила перезаписи, используя UrlRewriter.net , в мое веб-приложение ASP.NET. Проблема в том, что я новичок в Regex, и приведенные примеры довольно элементарны.

У меня вопрос: как различить URL-адреса, содержащие параметры запроса GET?

Т.е., если я добавлю это правило:

<rewrite url="~/([.+])" to="~/$1.aspx" />

Переписывает www.example.com/products в www.example.com/products.aspx, но также перезаписывает www.example.com/products?id=1 в www.example.com/products?id=1.aspx.

Проблема на самом деле возникает только при использовании элемента управления входом, поскольку он создает URL-адрес, похожий на www.example.com/login?returnUrl=/members, и я не уверен, как его переписать.

Что бы я хотел:

  • переписать www.ex.com/test в www.ex.com/test.aspx и
  • переписать www.ex.com/test?page=dummy в www.ex.com/test.aspx?page=dummy.aspx

Большое спасибо!

[edit] И, кстати, я до сих пор не понял, как включить отладку консоли для UrlRewriter. Я добавил раздел «регистрация регистратора» в файл конфигурации, но окна вывода VS ничего не показывает. Это также было бы полезно.

1 Ответ

0 голосов
/ 12 апреля 2011

Используйте следующее регулярное выражение для матча:

"~/([^\?]+)(.*)?"

Таким образом, вы сопоставляете все до знак вопроса - один или несколько символов, которые не являются знаком вопроса.

Тогда $ 1 содержит часть пути, а $ 2 - все из "?" до конца URL.

Обратите внимание на знак вопроса после скобок второй группы - это означает, что эта часть вам не требуется, поэтому www.ex.com/test также будет работать.

...