Перезапись URL делает все ссылки одинаковыми шаблонами после посещения любой перезаписанной ссылки в ASP.NET - PullRequest
0 голосов
/ 30 апреля 2011

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

Я хочу перенаправить ~/product/45/something на ~/show_product_details.aspx?current_prod=45

и работает нормально. Но проблема в том, что когда я запрашиваю ~/product/45/something, я получаю страницу от ~/show_product_details.aspx?current_prod=45. После этого, когда я нажимаю какую-то ссылку, например ~/home.aspx, она снова перенаправляет меня на ~/product/45/home.aspx.

Пожалуйста, предложите, как это исправить. Я использую это правило:

          <add name="Gallery1" virtualUrl="^~/product/(.*)/(.*)" 
                 rewriteUrlParameter="ExcludeFromClientQueryString"
                destinationUrl="~/show_product_details.aspx?current_prod=$1"
         ignoreCase="true" />   

1 Ответ

1 голос
/ 30 апреля 2011

Похоже, что URL-адреса в вашем приложении ASP.NET не разрешены в корне приложения, а скорее являются относительными ссылками, что приводит к необходимости учитывать структуру папок.

Если вы используетеASP.NET Web Forms необходимо убедиться, что вы вызываете ResolveUrl ("~ / home.aspx") при выводе URL-адреса или что гиперссылка имеет вид runat = server, например:

<a runat="server" href="~/home.aspx">Home</a>

ИЛИ:

<a href='<%# ResolveUrl("~/home.aspx") %>'>Home</a>

Другим способом решения этой проблемы является наличие базовой ссылки в вашем HTML, которая сообщает браузеру, что ВСЕ ссылки на странице должны быть укоренены по указанному пути:

В разделе <head>: <base href='http://www.yourwebsite.com/' />

...