Перезапись URL - целевая страница не получает значения строки запроса - PullRequest
0 голосов
/ 14 октября 2010

Я пытаюсь реализовать перезапись URL в моем существующем приложении, и мне удалось заставить страницу и ссылки работать, за исключением того, что моя целевая страница не получает значения строки запроса.

Мой код основан на примере ниже:

http://dotnetguts.blogspot.com/2008/07/url-rewriting-with-urlrewriternet.html

Обычно у меня есть страница default.aspx со ссылками на другую страницу;

directory_item.aspx?Item_Id=1&Category_Id=1
directory_item.aspx?Item_Id=2&Category_Id=1 and so on...

Код в моей веб-конфигурации выглядит следующим образом;

< rewriter >
   < rewrite url="~/(.+)-(.+).aspx" to="~/directory_item.aspx?MyTitleItem_Id=$2" / >
< /rewriter >

Что касается функции, упомянутой в приведенной выше ссылке на веб-сайт, я изменил ее, чтобы она также соответствовала моему идентификатору категории;

Public Shared Function GenerateURL(ByVal Title As Object, ByVal strId As Object, ByVal strCategoryId As Object) As String
   Dim strTitle As String = Title.ToString()
   ...
   ...

   ...

   'Append ID at the end of SEO Friendly URL
        strTitle = "~/" & strTitle & "-" & Convert.ToString(strId) & "-" & Convert.ToString(strCategoryId) & ".aspx"

   Return strTitle
End Function

На моей странице Load of directory_item.aspx я ищу значения строки запроса Item_Id и Category_Id, и, поскольку я реализовал вышеприведенное, страница возвращает только пустую страницу без данных? Я что-то упустил и просто не знаю где? Любая помощь будет оценена.

URL-адрес изменяется на 'the-title-page-2-1.aspx', и он загружает стили и все, кроме данных. Так что с моим кодом должно быть что-то не так.

То, что я обнаружил до сих пор;

Изменяя код в файле веб-конфигурации, я получил его на работу; за исключением того, что теперь мне нужно получить второй параметр строки запроса;

url="(.+)-(.+).aspx" to="~/directory_item.aspx?Item_Id=$2"

Какие-нибудь советы, как мне заставить работать второй параметр строки запроса? Спасибо

1 Ответ

0 голосов
/ 09 января 2011

Это скорее мнение, чем ответ, так как я пытался использовать urlwriter.net в прошлом.

Я перешел на http://www.urlrewriting.net/

Я обнаружил, что гораздо проще создать нужные URL-адреса, правило переписывания будет выглядеть примерно так:

    <add name="News" 
         virtualUrl="~/news/(?:[0-9a-zA-Z-]{1,255})-([0-9]{1,7}).(?:aspx|html)" 
         rewriteUrlParameter="ExcludeFromClientQueryString" 
         destinationUrl="~/content/news.aspx?id=$1" 
         rewrite="Application" 
         ignoreCase="true" />

В случае нескольких параметров.

<code>    <add name="News List" 
         virtualUrl="~/news/([a-zA-Z]{1,10})/([0-9]{4})/archive.(?:aspx|html)" 
         rewriteUrlParameter="ExcludeFromClientQueryString" 
         destinationUrl="~/content/news-list.aspx?month=$1&year=$2" 
         rewrite="Application" 
         ignoreCase="true" />

Сказав это, если у вас есть IIS7, я предлагаю получить модуль перезаписи URL:

http://www.iis.net/download/URLRewrite

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...