Перезапись URL делает все ссылки одинаковых шаблонов после посещения любой переписанной ссылки в ASP.NET
-
27-10-2019 - |
Вопрос
Я использую 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/' />