Todos os produtos
Search
Central de documentação

Edge Security Acceleration:Reescrita de URL

Última atualização: Jul 13, 2026

Configure regras de reescrita de URL nos nós de borda do ESA para modifique o caminho da solicitação e a query string durante requisições à origem. Migre caminhos no servidor de origem sem alterar as URLs voltadas ao usuário ou as configurações de frontend.

Casos de uso típicos

  • Migração de origem: O caminho do arquivo na origem foi ajustado, mas você deseja manter o caminho de acesso do usuário inalterado.

  • Adaptação de versão de API: Reescreva caminhos de versões antigas da API para a nova versão.

  • Padronização de parâmetros: Unifique formatos de parâmetros enviados por diferentes clientes.

  • URL limpa: Mapeie caminhos complexos de backend para caminhos simples e amigáveis ao usuário.

Como funciona

Nota

Se a reescrita de URL estiver ativada, as solicitações de prefetch devem usar a URL reescrita.

A reescrita de URL aplica-se apenas durante requisições à origem e não afeta o pipeline de processamento interno do ESA. A chave de cache é gerada a partir da URL original; portanto, a correspondência de cache permanece inalterada. A URL reescrita é utilizada exclusivamente nas requisições à origem.

Fluxo de execução

  1. Verificação de cache: O nó de borda consulta o cache usando a URL original. Em caso de cache miss, as regras de reescrita transformam a URL no caminho de destino.

  2. Requisição à origem: O sistema envia a URL reescrita ao servidor de origem. A resposta é armazenada em cache tendo a URL original como chave.

  3. Retorno do conteúdo em cache: O conteúdo armazenado é retornado ao cliente.

Ordem de execução

A reescrita de URL ocorre após a verificação de cache e a seleção da origem, mas antes da modificação dos cabeçalhos de requisição à origem. O caminho é ajustado depois que o destino da origem é determinado, sem impactar o processamento de cabeçalhos.

Configure regras de reescrita de URL

  1. No console do ESA, selecione Websites e, na coluna Websites, clique em no site desejado.

  2. No painel de navegação à esquerda, escolha Websites > Website.

  3. Na seção Rules, clique em Transform Rules e insira um Rewrite URL. Configure o Create Rule e a Rule Name e, em seguida, clique em OK.

    Objeto de reescrita

    Método de operação

    Descrição

    Exemplo

    Path

    Retain

    Não modifica o caminho original.

    -

    Path

    Substitui por um caminho fixo (deve começar com /).

    /new/path

    Dynamic

    Utiliza uma expressão para gerar o caminho dinamicamente.

    concat("/v2", http.request.uri.path)

    Query String

    Retain

    Não modifica a query string original.

    -

    Static

    Substitui por parâmetros fixos (sem ?).

    version=new&type=api

    Retain

    Utiliza uma expressão para gerar a query string dinamicamente.

    concat("version=new&", http.request.uri.query)

Exemplos de configuração

Exemplo 1: Migração de caminho na origem

  • Cenário: A origem moveu imagens do diretório /images/ para o diretório /static/img/.

  • Condição de correspondência: starts_with(http.request.uri.path, "/images/")

  • Configuração de reescrita:

    Objeto de reescrita: Path

    Método de operação: Dynamic

    Expressão: regex_replace(http.request.uri.path, "^/images/", "/static/img/")

  • Efeito da reescrita:

    Solicitação do usuário: https://example.com/images/logo.png

    Requisição à origem: https://origin.com/static/img/logo.png

Exemplo 2: Adaptação de versão de API

  • Cenário: Reescrever requisições de /api/v1/ para /api/v2/ durante requisições à origem e adicionar um identificador de versão.

  • Condição de correspondência: starts_with(http.request.uri.path, "/api/v1/")

  • Configuração de reescrita:

    Objeto de reescrita: Path, Query string

    Método de operação: Dynamic

    Expressão de reescrita de caminho: regex_replace(http.request.uri.path, "^/api/v1/", "/api/v2/")

    Expressão de reescrita de query string: concat("api_version=v2&", http.request.uri.query)

  • Efeito da reescrita:

    Solicitação do usuário: https://example.com/api/v1/users?limit=10

    Requisição à origem: https://origin.com/api/v2/users?api_version=v2&limit=10

Exemplo 3: Padronização de parâmetros

  • Cenário: Diferentes clientes usam nomes de parâmetros distintos (como userid e uid). Unifique-os para o padrão user_id.

  • Condição de correspondência: http.request.uri.query contains "userid="

  • Configuração de reescrita:

    Objeto de reescrita: Query string

    Método de operação: Dynamic

    Expressão: regex_replace(http.request.uri.query, "userid=", "user_id=")

  • Efeito da reescrita:

    Solicitação do usuário: https://example.com/profile?userid=123

    Requisição à origem: https://origin.com/profile?user_id=123

Exemplo 4: Normalização de caminho

Caso 1

  • Cenário: Remover barras extras (como //) das URLs causadas por erros de entrada.

  • Observação: A função regex_replace substitui apenas a primeira ocorrência na string de origem.

  • Condição de correspondência: http.request.uri.path contains "//"

  • Configuração de reescrita:

    Objeto de reescrita: Path

    Método de operação: Dynamic

    Expressão: regex_replace(http.request.uri.path, "//+", "/")

  • Efeito da reescrita:

    Solicitação do usuário: https://example.com/path//to/resource

    Requisição à origem: https://origin.com/path/to/resource

Caso 2

  • Cenário: Reduzir múltiplas barras consecutivas para barras únicas. Exemplo: /path///download//image//user.jpg.

  • Solução: Aninhar múltiplas chamadas de regex_replace para substituir progressivamente as barras consecutivas.

  • Condição de correspondência: http.request.uri.path contains "//"

  • Configuração de reescrita:

    • Objeto de reescrita: Path

    • Método de operação: Dynamic

    • Expressão: regex_replace(regex_replace(regex_replace(http.request.uri.path, "//+", "/"), "//+", "/"), "//+", "/")

  • Efeito da reescrita:

    • Solicitação do usuário: https://example.com/path///download//image//user.jpg

    • Requisição à origem: https://origin.com/path/download/image/user.jpg

Exemplo 5: Remover todos os parâmetros de consulta

  • Cenário: Eliminar todos os parâmetros de consulta de recursos estáticos. Por exemplo, remover query strings de URIs terminadas em .css.

  • Condição de correspondência: ends_with(http.request.uri.path, ".css")

  • Configuração de reescrita:

    Objeto de reescrita: Query string

    Método de operação: Dynamic

    Expressão: regex_replace(http.request.uri.query, ".*", "")

  • Efeito da reescrita:

    Solicitação do usuário: https://example.com/style.css?version=1.2.3

    Requisição à origem: https://origin.com/style.css

Exemplo 6: Simplificar caminhos dinâmicos

  • Cenário: Remover sequências numéricas redundantes dos caminhos. Por exemplo, eliminar 123 seguido de dígitos em caminhos sob /example/.

  • Condição de correspondência: (http.request.uri matches "^/example/(.*)123[0-9]+(.*)$")

  • Configuração de reescrita:

    Objeto de reescrita: Path

    Método de operação: Dynamic

    Expressão: regex_replace(http.request.uri,"^/example/(.*)123[0-9]+(.*)$","/example/$1$2")

  • Efeito da reescrita:

    Solicitação do usuário: https://example.com/example/tool12300341features

    Requisição à origem: https://origin.com/example/toolfeatures

Exemplo 7: Extrair parâmetros de caminho e adicionar à query string

  • Cenário: Extrair um segmento dinâmico do caminho, anexá-lo como parâmetro de consulta e substituí-lo por uma string fixa:

    URI original: /api/v1/dynamic_value/download?version=1&size=2

    URI reescrita: /api/v1/fixed/download?version=1&size=2&token=dynamic_value

  • Condição de correspondência: Todas as requisições recebidas

  • Configuração de reescrita:

    Objeto de reescrita: Path + Query string

    Método de operação: Dynamic

    Expressão de reescrita de caminho: regex_replace(http.request.uri.path, "^/api/v1/(.*)/download$", "/api/v1/fixed/download")

    Expressão de reescrita de query string: concat(http.request.uri.query,"&token=",regex_replace(http.request.uri.path, "^/api/v1/(.*)/download$","$1"))

  • Efeito da reescrita:

    Solicitação do usuário: https://example.com/api/v1/ABC123/download?version=1&size=2

    Requisição à origem: https://origin.com/api/v1/fixed/download?version=1&size=2&token=ABC123

Exemplo 8: Remover parâmetros específicos

  • Cenário: Remover parâmetros de consulta específicos. Por exemplo, dada a URL https://example.com/1.txt?key1=value1&key2=value2&key3=value3&key4=value4&key5=value5&key6=value6, remova key2, key3, key5 e key6, mantendo apenas key1 e key4.

  • Condição de correspondência: Todas as requisições recebidas

  • Configuração de reescrita:

    Objeto de reescrita: Query string

    Método de operação: Dynamic

    Expressão: regex_replace(regex_replace(regex_replace(regex_replace(http.request.uri.query, "(&?key2=[^&]*)", ""), "(&?key3=[^&]*)", ""), "(&?key5=[^&]*)", ""), "(&?key6=[^&]*)", "")

    Nota

    Cada regex_replace aninhado remove um parâmetro. O padrão (&?keyN=[^&]*) corresponde ao & precedente para evitar caracteres & residuais.

  • Efeito da reescrita:

    Solicitação do usuário: https://example.com/1.txt?key1=value1&key2=value2&key3=value3&key4=value4&key5=value5&key6=value6

    Requisição à origem: https://origin.com/1.txt?key1=value1&key4=value4

Exemplo 9: Manter parâmetros específicos

  • Cenário: Manter apenas parâmetros de consulta específicos. Por exemplo, dada a URL https://example.com/1.txt?key1=value1&key2=value2&key3=value3&key4=value4, mantenha apenas key1 e key4.

  • Condição de correspondência: Todas as requisições recebidas

  • Configuração de reescrita:

    Objeto de reescrita: Query string

    Método de operação: Dynamic

    Expressão: concat("key1=", http.request.uri.args["key1"], "&key4=", http.request.uri.args["key4"])

    Nota

    A função concat reconstrói a query string com apenas os parâmetros especificados. Use http.request.uri.args["keyN"] para extrair o valor de cada parâmetro. Parâmetros não listados são excluídos.

  • Efeito da reescrita:

    Solicitação do usuário: https://example.com/1.txt?key1=value1&key2=value2&key3=value3&key4=value4

    Requisição à origem: https://origin.com/1.txt?key1=value1&key4=value4