你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure 应用程序网关重写 URL - Azure 门户

本文介绍如何使用 Azure 门户来配置 Azure 应用程序网关 v2 SKU 实例以重写 URL。

注意

URL 重写功能仅适用于 Standard_v2 和 Web 应用程序防火墙_v2 SKU 版应用程序网关。 在启用了 Web 应用程序防火墙的网关上配置 URL 重写时,会对重写的请求标头和 URL 进行 Web 应用程序防火墙评估。 有关详细信息,请参阅将 URL 重写或主机头重写与 Web 应用程序防火墙 (WAF_v2 SKU) 结合使用

如果没有 Azure 订阅,请在开始之前创建一个免费帐户

开始之前

若要完成本文中的步骤,需要有应用程序网关 v2 SKU 实例。 v1 SKU 不支持重写 URL。 如果没有 v2 SKU,请在开始之前创建应用程序网关 v2 SKU 实例。

登录 Azure

使用 Azure 帐户登录到 Azure 门户

配置 URL 重写

在以下示例中,每当请求 URL 包含 /article 时,URL 路径和 URL 查询字符串就会重写。 例如:

contoso.com/article/123/fabrikam ->contoso.com/article.aspx?id=123&title=fabrikam

  1. 选择“所有资源”,然后选择你的应用程序网关 。

  2. 在服务窗格中,选择“重写”

  3. 选择“重写集”。

    显示添加重写集的屏幕截图。

  4. 为重写集输入一个名称,并将其与路由规则相关联:

    1. 在“名称”框中输入重写集的名称。

    2. 在“关联的路由规则”列表中选择一个或多个规则。 此步骤通过传递规则将重写配置关联到源侦听器。 只选择尚未与其他重写集关联的路由规则。 已经与其他重写集关联的规则处于灰显状态。

    3. 选择下一步

    显示与规则关联的屏幕截图。

  5. 创建重写规则:

    1. 选择“添加重写规则”。

      显示“添加重写规则”的屏幕截图。

    2. 在“重写规则名称”框中输入重写规则的名称。

    3. 在“规则顺序”框中输入一个数字。

  6. 在此示例中,仅当路径包含 /article 时,我们才会重写 URL 路径和 URL 查询字符串。 若要执行此步骤,请添加条件用于评估 URL 路径是否包含 /article

    1. 选择“添加条件”,然后选择包含 If 指令的框将其展开。

    2. 在“要检查的变量的类型”列表中,选择“服务器变量”。 在此示例中,我们希望检查 URL 路径中的模式 /article

    3. 在“服务器变量”列表中,选择 uri_path

    4. 在“区分大小写”下选择“否”。

    5. 在“运算符”列表中选择“等于(=)”。

    6. 输入正则表达式模式。 在此示例中,我们使用 .*article/(.*)/(.*) 模式

      括号 ( ) 用于捕获 substring,以供稍后在编写用于重写 URL 路径的表达式时使用。 有关详细信息,请参阅模式匹配和捕获

    7. 选择“确定”

    显示条件的屏幕截图。

  7. 添加操作以重写 URL 和 URL 路径:

    1. 在“重写类型”列表中,选择“URL”。

    2. 在“操作类型”列表中,选择“设置”。

    3. 在“组件”下,选择“URL 路径和 URL 查询字符串”

    4. 在“URL 路径值”中,输入路径的新值。 在本例中,我们使用 /article.aspx

    5. 在“URL 查询字符串值”中,输入 URL 查询字符串的新值。 在本例中,我们使用 id={var_uri_path_1}&title={var_uri_path_2}

      {var_uri_path_1}{var_uri_path_2} 路径用于在计算表达式 .*article/(.*)/(.*) 中的条件时获取捕获的子字符串

    6. 选择“确定”

    显示操作的屏幕截图。

  8. 选择“创建”以创建重写集。

  9. 验证新的重写集是否在重写集列表中显示。

    显示添加重写规则的屏幕截图。

通过访问日志验证 URL 重写

观察访问日志中的以下字段,以验证是否按照预期进行 URL 重写:

  • originalRequestUriWithArgs:此字段包含原始请求 URL。
  • requestUri:在应用程序网关上执行重写操作后,此字段将包含 URL。

有关访问日志中的所有字段的详细信息,请参阅访问日志

有关如何设置某些常见用例的重写的详细信息,请参阅常见重写方案