2009-09-29 2 views
0

Я использую URLRewritingNet 2.0. Как переписать URL в ASP.NET?URLRewriting вызов

Вот запрос:

  • Вход: www.sampleweb.com/param1/value1/param2/value2/default.aspx
  • Выход: www.sampleweb.com/default.aspx?param1=value1&param2=value2

Он должен работать динамически, как этот param1/value1/param2/value2/ ... /paramN/valueN

+1

Это действительно плохой способ передать параметры! –

+0

Что делать, если ваш вход похож: www.sampleweb.com/value1/value2/default.aspx, и вывод может быть тем, что вы ищете, если это нормально, тогда я предоставит вам ссылку и поможет выполнить это. –

ответ

0

Это не является хорошим способом, чтобы передать ключ/значения.

Вы должны принять ключ, основанный на позиции значений. Это облегчает жизнь. HttpContext.RewritePath (с его вариантами) - это то, как вы собираетесь преобразовывать URL.

0

Так что ... в основном вы не можете сделать это на узле «переписать» в файле web.config с помощью URL-адреса Rewriter.

Но вы можете сделать это в другом месте вашего кода (HTTP-модуль, или Запрос на запуск, или что-то еще). Для того, чтобы превратить вас URL, вы могли бы сделать что-то вроде этого:

string strRegex= @"/([^/]*)/([^/]*)"; 
    RegexOptions myRegexOptions = RegexOptions.None; 
    Regex myRegex = new Regex(strRegex, myRegexOptions); 
    string strTargetString = @"/param1/value1/param2/value2/param3/value3/param4/value4"; 
    string strReplace = @"$1=$2&"; 

Если вы объедините это с соответствием имя файла (вот RE):

(.*)/([^/]*\..*)$ 

, а затем снова сочинял полный URL - то вы можете выполнить Server.Execute или что угодно (если на вашем собственном сервере) или иным образом прокси-сервер туда, где вы хотите, чтобы это обработано. Да, это немного уродливо, но если у вас нет контроля над формой запроса, который приходит на вас, это способ его преобразования.

Смежные вопросы