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"));
    }
Другие вопросы по тегам