Поделиться через


HttpContext.RewritePath Метод

Определение

Перенаправляет запрос ресурса на другой путь, отличный от пути, указанного запрошенным URL-адресом. RewritePath используется в состоянии сеанса без файлов cookie для удаления идентификаторов сеансов из URL-адресов.

Перегрузки

Имя Описание
RewritePath(String, String, String, Boolean)

Перезаписывает URL-адрес, используя заданный виртуальный путь, сведения о пути, сведения о строке запроса и логическое значение, указывающее, задан ли путь к файлу клиента путь перезаписи.

RewritePath(String, String, String)

Перезаписывает URL-адрес с помощью заданного пути, сведений о пути и строковых данных запроса.

RewritePath(String, Boolean)

Перезаписывает URL-адрес с помощью заданного пути и логическое значение, указывающее, изменяется ли виртуальный путь для ресурсов сервера.

RewritePath(String)

Перезаписывает URL-адрес с помощью заданного пути.

RewritePath(String, String, String, Boolean)

Перезаписывает URL-адрес, используя заданный виртуальный путь, сведения о пути, сведения о строке запроса и логическое значение, указывающее, задан ли путь к файлу клиента путь перезаписи.

public:
 void RewritePath(System::String ^ filePath, System::String ^ pathInfo, System::String ^ queryString, bool setClientFilePath);
public void RewritePath(string filePath, string pathInfo, string queryString, bool setClientFilePath);
member this.RewritePath : string * string * string * bool -> unit
Public Sub RewritePath (filePath As String, pathInfo As String, queryString As String, setClientFilePath As Boolean)

Параметры

filePath
String

Виртуальный путь к ресурсу, который обслуживает запрос.

pathInfo
String

Дополнительные сведения о пути для перенаправления URL-адреса. Дополнительные сведения см. в разделе PathInfo.

queryString
String

Строка запроса, используемая для перенаправления URL-адреса.

setClientFilePath
Boolean

true Чтобы задать путь к файлу, используемый для клиентских ресурсов, значение filePath параметра; в противном случае false.

Исключения

Параметр path не находится в корневом каталоге текущего приложения.

Параметр filePath не находится в корневом каталоге текущего приложения.

Примеры

Пример кода см. в разделе перегрузки RewritePath(String) метода.

Комментарии

Параметр filePath не включает содержимое pathInfo параметра. Для URL-адреса http://www.microsoft.com/virdir/page.html/tailfilePath параметр имеет http://www.microsoft.com/virdir/page.htmlзначение , а pathInfo параметр является хвостом.

Чтобы убедиться, что виртуальный путь, используемый для создания путей к ресурсам, не изменяется, задайте setClientFilePath для параметра значение false. Распространенный сценарий, в котором может потребоваться задать setClientFilePathfalse значение, заключается в том, когда необходимо перезаписать URL-адрес, и вы используете темы и перенаправляете URL-адрес в ресурс, расположенный в другой папке, чем запрошенный ресурс.

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

Если вы хотите включить сайт для использования URL-адресов, которые более удобны для пользователей и оптимизированы для поисковых систем, более надежная альтернатива — использовать ASP.NET маршрутизацию. Дополнительные сведения см. в разделе ASP.NET Маршрутизация.

См. также раздел

Применяется к

RewritePath(String, String, String)

Перезаписывает URL-адрес с помощью заданного пути, сведений о пути и строковых данных запроса.

public:
 void RewritePath(System::String ^ filePath, System::String ^ pathInfo, System::String ^ queryString);
public void RewritePath(string filePath, string pathInfo, string queryString);
member this.RewritePath : string * string * string -> unit
Public Sub RewritePath (filePath As String, pathInfo As String, queryString As String)

Параметры

filePath
String

Внутренний путь перезаписи.

pathInfo
String

Дополнительные сведения о пути для ресурса. Дополнительные сведения см. в разделе PathInfo.

queryString
String

Строка запроса.

Исключения

Параметр path не находится в корневом каталоге текущего приложения.

Параметр filePath не находится в корневом каталоге текущего приложения.

Примеры

Пример кода, включая пример перегрузки этого метода, см. в разделе перегрузки RewritePath(String) метода.

Комментарии

Метод RewritePath перенаправляет запрос ресурса на другой ресурс без изменения URL-адреса.

Параметр filePath не включает содержимое pathInfo параметра. Для URL-адреса http://www.microsoft.com/virdir/page.html/tailfilePath параметр имеет http://www.microsoft.com/virdir/page.htmlзначение , а pathInfo параметр является хвостом.

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

Если вы хотите включить сайт для использования URL-адресов, которые более удобны для пользователей и оптимизированы для поисковых систем, более надежная альтернатива — использовать ASP.NET маршрутизацию. Дополнительные сведения см. в разделе ASP.NET Маршрутизация.

См. также раздел

Применяется к

RewritePath(String, Boolean)

Перезаписывает URL-адрес с помощью заданного пути и логическое значение, указывающее, изменяется ли виртуальный путь для ресурсов сервера.

public:
 void RewritePath(System::String ^ path, bool rebaseClientPath);
public void RewritePath(string path, bool rebaseClientPath);
member this.RewritePath : string * bool -> unit
Public Sub RewritePath (path As String, rebaseClientPath As Boolean)

Параметры

path
String

Внутренний путь перезаписи.

rebaseClientPath
Boolean

true для сброса виртуального пути; false значение , чтобы сохранить виртуальный путь без изменений.

Исключения

Параметр path имеет значение null.

Параметр path не находится в корневом каталоге текущего приложения.

Примеры

Пример кода см. в разделе перегрузки RewritePath(String) метода.

Комментарии

Метод HttpContext.RewritePath(String, Boolean) вызывается методом с заданным HttpContext.RewritePath(String) параметром rebaseClientPathtrue. Чтобы убедиться, что виртуальный путь, используемый для создания путей к ресурсам, не изменяется, задайте rebaseClientPath для параметра значение false. Распространенный сценарий, в котором может потребоваться задать rebaseClientPathfalse значение, заключается в том, когда необходимо перезаписать URL-адрес, и вы используете темы и перенаправляете URL-адрес в ресурс, расположенный в другой папке, чем запрошенный ресурс.

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

Если вы хотите включить сайт для использования URL-адресов, которые более удобны для пользователей и оптимизированы для поисковых систем, более надежная альтернатива — использовать ASP.NET маршрутизацию. Дополнительные сведения см. в разделе ASP.NET Маршрутизация.

См. также раздел

Применяется к

RewritePath(String)

Перезаписывает URL-адрес с помощью заданного пути.

public:
 void RewritePath(System::String ^ path);
public void RewritePath(string path);
member this.RewritePath : string -> unit
Public Sub RewritePath (path As String)

Параметры

path
String

Внутренний путь перезаписи.

Исключения

Параметр path имеет значение null.

Параметр path не находится в корневом каталоге текущего приложения.

Примеры

В следующем примере показано, как использовать RewritePath метод, чтобы веб-сайт мог реагировать на URL-адреса, которые не отражают структуру файлов на веб-сайте. Первый блок кода — это веб-страница ASP.NET с именем RewritePath.aspx. Для этого требуется строка запроса. Если имя сайта — WebSite1, URL-адрес http://localhost/WebSite1/RewritePath.aspx?page=1 отображает "Страница 1" в браузере. Блок кода, который следует за веб-страницей, является Application_BeginRequest обработчиком событий в файле Global.asax. Этот код перехватывает запросы для URL-адресов, таких как http://localhost/WebSite1/page1 и преобразует их в форму, необходимую для RewritePath.aspx перед их обработкой. Поэтому URL-адрес http://localhost/WebSite1/page1 вызывает RewritePath.aspx с параметром строки запроса, который отображает "Страница 1" в браузере. При получении URL-адреса http://localhost/WebSite1/page1 вызывается перегрузка RewritePath , которая позволяет указать значение свойства PathInfo , а также параметр строки запроса.

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = "Page=" + Request.QueryString["page"] + " PathInfo=" + Request.PathInfo;
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </div>
    </form>
</body>
</html>
<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
        Label1.Text = "Page=" & Request.QueryString("page") & " PathInfo=" & Request.PathInfo
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </div>
    </form>
</body>
</html>
void Application_BeginRequest(Object sender, EventArgs e)
{
    string originalPath = HttpContext.Current.Request.Path.ToLower();
    if (originalPath.Contains("/page1"))
    {
        Context.RewritePath(originalPath.Replace("/page1", "/RewritePath.aspx?page=page1"));
    }
    if (originalPath.Contains("/page2"))
    {
        Context.RewritePath(originalPath.Replace("/page2", "/RewritePath.aspx"), "pathinfo", "page=page2");
    }
}    
Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
    Dim originalPath As String = HttpContext.Current.Request.Path.ToLower()
    If originalPath.Contains("/page1") Then
        Context.RewritePath(originalPath.Replace("/page1", "/RewritePath.aspx?page=page1"))
    End If
    If originalPath.Contains("/page2") Then
        Context.RewritePath(originalPath.Replace("/page2", "/RewritePath.aspx"), "pathinfo", "page=page2")
    End If
End Sub

Комментарии

Метод RewritePath(String) перенаправляет запрос ресурса на другой путь, отличный от пути, указанного запрошенным URL-адресом. Если необходимо сбросить виртуальный путь, чтобы запросы от клиента для ресурсов сервера разрешались правильно, используйте перегрузку этого метода, который принимает rebaseClientPath параметр и задайте для него значение false.

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

Если вы хотите включить сайт для использования URL-адресов, которые более удобны для пользователей и оптимизированы для поисковых систем, более надежная альтернатива — использовать ASP.NET маршрутизацию. Дополнительные сведения см. в разделе ASP.NET Маршрутизация.

См. также раздел

Применяется к