Я видел в Интернете, что многие друзья переписывают URL-адреса в asp.net и используют метод HttpHandle+Server.Transfer. На самом деле этот метод неправильный. Во-первых, HttpHandle не может реализовать urlrewrite, во-вторых, Server.Transfer — это стандартное перенаправление, а не urlrewrite;
Фактически, вам не нужно реализовывать собственный HttpHandle или HttpModule для реализации urlrewrite. Его можно легко реализовать с помощью нескольких строк кода.
Здесь я рассказываю о виртуальном хосте. Виртуальный хост отличается от вашего собственного сервера. У вас нет разрешения на изменение iis, а также у вас нет разрешения на установку подключаемых модулей iis, таких как перезапись iis. Но мы все равно можем легко выполнить необходимые функции.
Конкретный метод заключается в следующем: откройте global.asax.cs и найдите защищенный void Application_BeginRequest (отправитель объекта, EventArgs e). Думаю, по названию метода я могу догадаться, что он делает. Введите следующий код:
protected void Application_BeginRequest (отправитель объекта, EventArgs e)
{
строка oldUrl = HttpContext.Current.Request.RawUrl
шаблон строки = @"^(.+)default/(d+).aspx(?.*)*$";
строка replace = "$1default.aspx?id=$2";
if(Regex.IsMatch(oldUrl, шаблон, RegexOptions.IgnoreCase | RegexOptions.Compiled))
{
строка newUrl = Regex.Replace(oldUrl, шаблон, замена, RegexOptions.Compiled | RegexOptions.IgnoreCase);
this.Context.RewritePath(newUrl);
}
}
С помощью приведенного выше кода я получаю доступ к URL-адресу, похожему на: .../default/123.aspx. Конечно, этот URL-адрес не существует на моем компьютере, поэтому он будет направлен на: .../default.aspx id? =123.
Конечно, используя мощные регулярные выражения, вы можете переписать URL-адрес под свои нужды. Все это делается незаметно на стороне сервера, и клиент об этом не узнает. Поскольку он находится на виртуальном хосте, мы можем перенаправить файл .aspx только в том случае, если это наш собственный сервер, мы можем обработать любой суффикс, просто зарегистрировав его в iis. Например, вы можете зарегистрировать такой тип, как *.myweb, чтобы, когда другие посещают default/456.myweb, вы могли перенаправлять его на default.aspx?id=456. Одним словом, пока вы можете об этом думать, .net может помочь вам это реализовать, и все это не требует большого количества кода.