Перезапись URL делает все ссылки одинаковых шаблонов после посещения любой переписанной ссылки в ASP.NET

StackOverflow https://stackoverflow.com/questions/5841671

Вопрос

Я использую 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" />   
Это было полезно?

Решение

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

Если вы используете веб -формы ASP.NET, вам необходимы для того, чтобы вы либо вызовули RESOLEURL ("~/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/' />

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top