URL Mapping - Измените Default.aspx на виртуальную страницу после загрузки первой страницы
Я хочу иметь виртуальную страницу вместо Default.aspx, как:www.mydomain.com/Default.aspx
-> www.mydomain.com/Virual-Page
после открытия моего URL в браузере.
Как я могу изменить web.config для достижения этой цели?
Коды ниже в web.config не работают....
<urlMappings enabled="true">
<add url="~/Virtual-Page" mappedUrl="~/Default.aspx"/>
</urlMappings>
1 ответ
Решение
Вам нужен этот пакет: ASP.NET Friendly URL, как реализовать, можно найти в блоге Гензельмана
Добавьте это в ваш файл global.asax
void Application_Start(object sender, EventArgs e)
{
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
Добавьте ссылку вверху файла Global.asax, как показано ниже:
using System.Web.Routing;
это автоматически переписывает ваш URL.
Если вы хотите сохранить default.aspx, используйте URL Mapping:
<urlMappings enabled="true">
<add url="~/Virtual-Page" mappedUrl="~/default.aspx" />
</urlMappings>
Добавьте правило перезаписи для перенаправления вашего базового URL с помощью URL Rewrite
<system.webServer>
<rewrite>
<rules>
<rule name="Rewrite to Virtual-Page">
<match url="(.*)" />
<action type="Redirect" url="~/Virtual-Page" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
Если вы не можете использовать перезапись URL-адреса, добавьте response.redirect в запросе global.asax begin:
void Application_BeginRequest(object sender, EventArgs e)
if (!HttpContext.Current.Request.Url.ToString().ToLower().Contains("http://localhost/Virtual-Page"))
{
HttpContext.Current.Response.Redirect(HttpContext.Current.Request.Url.ToString().ToLower().Replace("http://localhost/", "http://localhost/Virtual-Page"));
}