O Alibaba Cloud CDN oferece suporte à reescrita de URL. A reescrita afeta apenas a URL utilizada nas solicitações de busca na origem, sem impactar o roteamento interno do CDN ou a chave de cache.
Como funciona
As regras de Origin Path Rewrite permitem modificar o caminho da solicitação para corresponder à localização real do recurso no servidor de origem. Isso garante que os POPs recuperem recursos com precisão ou transmitam strings de consulta específicas à origem.
-
Se o Flag estiver definido como None ou break, apenas o caminho do recurso na URL será reescrito.

-
Caso o Flag esteja definido como enhance break, tanto o caminho do recurso quanto a string de consulta poderão ser reescritos.

Notas de uso
É possível configurar até 50 regras de Origin Path Rewrite para um único nome de domínio.
A aplicação das regras ocorre de cima para baixo. A ordem delas influencia o resultado final da reescrita.
Ao definir regras de Origin Path Rewrite, podem surgir conflitos com o recurso Ignore Parameters, localizado na aba Domain Names > Optimization. Evite tais conflitos de configuração.
Se você configurar simultaneamente Origin Path Rewrite e regras condicionais de origem, a regra de Origin Path Rewrite poderá alterar o caminho da URL de busca na origem. Essa alteração pode fazer com que o caminho recebido pelo servidor de origem difira do esperado, gerando um erro 404. Para solucionar o problema, desative temporariamente a regra de Origin Path Rewrite e verifique se a solicitação funciona conforme o esperado. Caso precise utilizar ambos os recursos, ajuste as prioridades e condições das regras para evitar reescritas de caminho não intencionais.
Diferenças entre Access URL Rewrite e Origin Path Rewrite
Recurso | Objeto afetado | Experiência do cliente | Cenário de aplicação |
Afeta a URL acessada pelo cliente. Também altera a URL que o nó DCDN utiliza para buscas na origem. |
| Geralmente utilizado para migrar ou mapear URLs de um nome de domínio antigo para um novo. Também serve para fornecer URLs distintas para clientes móveis e PCs. Exemplo: Quando um cliente acessa | |
Afeta a URL que o nó DCDN usa para buscar conteúdo na origem. A URL acessada pelo cliente não sofre alterações. | A URL exibida ao cliente é idêntica à URL de acesso real. Não há mudanças. | Frequentemente usado para ocultar a estrutura real de URLs do servidor de origem, protegendo suas informações. Também é aplicado no mapeamento de URLs para permitir que o nó DCDN busque conteúdo em diferentes pastas do servidor de origem. Exemplo: Ao acessar |
Diagrama de Access URL Rewrite
O cliente envia uma solicitação a um nó DCDN. A URL da solicitação é
old.example.com/hello.Após receber a solicitação, o nó DCDN aplica a regra de reescrita de URL. O nó DCDN inclui a nova URL,
new.example.com/hello, no cabeçalho Location da resposta 302 enviada ao cliente.Ao receber a resposta 302, o cliente envia uma solicitação para a nova URL.
O nó DCDN verifica seu cache. Se o cache contiver o conteúdo da URL reescrita, o nó retorna esse conteúdo diretamente ao cliente. Caso contrário, o nó DCDN envia uma solicitação ao servidor de origem utilizando a URL reescrita,
new.example.com/hello.O servidor de origem recebe a solicitação e devolve o conteúdo da resposta ao nó DCDN.
O nó DCDN armazena o conteúdo da resposta em cache e o retorna ao cliente.
Diagrama de Origin Path Rewrite
O cliente envia uma solicitação a um nó DCDN. A URL da solicitação é
cdn.example.com/files/hello.txt.Depois de receber a solicitação, o nó DCDN verifica seu cache. Se o conteúdo correspondente à URL solicitada estiver em cache, o nó o retorna diretamente ao cliente. Se não estiver, o nó DCDN aplica a regra de reescrita da URL de busca na origem. Ele reescreve a URL de busca na origem para
origin.example.com/secret/files/hello.txte envia uma solicitação ao servidor de origem.Após receber a solicitação, o servidor de origem retorna o conteúdo da resposta ao nó DCDN.
O nó DCDN armazena o conteúdo da resposta em cache e o entrega ao cliente.
Configurar a reescrita de caminho de origem
Faça login no CDN console.
No painel de navegação à esquerda, clique em Domain Names.
Na página Domain Names, localize o nome de domínio desejado e clique em Manage na coluna Actions.
No painel de navegação à esquerda do nome de domínio, clique em Origin Fetch.
Clique na aba Origin Path Rewrite.
-
Clique em Add. Configure os campos Path to Be Rewritten, Target Path e Flag.
Parâmetro
Exemplo
Descrição
Path to Be Rewritten
^/hello$
Caminho de URL que começa com barra (/) e não inclui
http://nem nome de domínio. É obrigatório usar um padrão PCRE (Perl Compatible Regular Expressions).Target Path
/hello/test
Caminho de URL iniciado por barra (/), sem incluir
http://ou nome de domínio. Há suporte para PCRE.Flag
None
Ao configurar múltiplas regras, após esta regra ser correspondida e executada, as regras subsequentes também serão processadas sequencialmente.
break
Se houver várias regras configuradas e a URL da solicitação corresponder a esta regra, nenhuma regra posterior será avaliada.
Apenas o caminho do recurso da URL é modificado, mantendo os parâmetros inalterados. Portanto, isso não interfere na reescrita de parâmetros feita pelo recurso Origin Path Rewrite.
enhance break
Quando múltiplas regras estão configuradas e a URL corresponde a esta regra, o sistema ignora as regras seguintes.
Semelhante ao
break, mas este flag também reescreve a string de consulta. Pode haver conflito com o recurso de reescrita de parâmetros de busca na origem. Caso utilize ambos, garanta que as configurações não entrem em conflito.
-
Clique em OK para aplicar a regra.
Também é possível clicar em Modify ou Delete na lista de regras da aba Origin Path Rewrite para gerenciar as regras existentes.
Exemplos de configuração
-
Exemplo 1: Flag definido como None
Path to Be Rewritten
^/hello$
Target Path
/index.html
Flag
None
Resultado
Solicitação original:
http://example.com/helloSolicitação de busca na origem após reescrita:
http://example.com/index.htmlEm seguida, a solicitação é comparada com as regras subsequentes na lista de Origin Path Rewrite.
-
Exemplo 2: Flag definido como break
Path to Be Rewritten
^/hello.jpg$
Target Path
/image/hello.jpg
Flag
break
Resultado
Solicitação original:
http://example.com/hello.jpgSolicitação de busca na origem após reescrita:
http://example.com/image/hello.jpgNenhuma regra subsequente na lista de Origin Path Rewrite será avaliada.
-
Exemplo 3: Flag definido como enhance break
Path to Be Rewritten
^/hello.jpg?code=123$
Target Path
/image/hello.jpg?code=321
Flag
enhance break
Resultado
Solicitação original:
http://example.com/hello.jpg?code=123Solicitação de busca na origem após reescrita:
http://example.com/image/hello.jpg?code=321O sistema não avalia regras posteriores na lista de Origin Path Rewrite.
-
Exemplo 4: Adição de prefixo em caminhos variáveis no diretório raiz
Por exemplo, é possível reescrever um caminho de URL como /xxx, onde xxx representa um nome de arquivo variável (como /hello.jpg ou /hello.html), para /image/xxx. Essa ação insere o prefixo /image no caminho de qualquer arquivo localizado no diretório raiz.
Path to Be Rewritten
^(.*)$
Nota^corresponde ao início da string.(.)é um grupo de captura, onde.aceita qualquer caractere único, exceto nova linha, erepete o caractere ou grupo anterior zero ou mais vezes. Use $1 no Target Path para referenciar o conteúdo capturado por esse grupo.$indica o fim da string. Assim,^(.)$abrange toda a string do início ao fim, capturando todos os caracteres (exceto novas linhas) em um grupo. Por exemplo, na string"hello world",^(.)$casa com a string inteira e armazena"hello world"no primeiro grupo.Target Path
/image$1
Nota/imagecorresponde à string"/image".$1referencia o conteúdo do primeiro grupo de captura,$2referencia o segundo grupo, e assim por diante. Logo,/image$1significa que a string"/image"será seguida imediatamente pelo conteúdo do primeiro grupo de captura. Por exemplo, se o primeiro grupo contiver"abc",/image$1resultará na string"/imageabc". Observe que$1aponta para o conteúdo do grupo de captura, e não para a string literal"$1". Para casar com a string literal"$1", use um caractere de escape, como"\$1".Flag
break
Resultado
Solicitação original:
http://example.com/hello.jpgSolicitação de busca na origem após reescrita:
http://example.com/image/hello.jpgSolicitação original:
http://example.com/hello.htmlSolicitação de busca na origem após reescrita:
http://example.com/image/hello.html
Regras subsequentes na lista de Origin Path Rewrite não são avaliadas.
-
Exemplo 5: Adição de prefixo em caminhos sob um diretório específico
Por exemplo, você pode reescrever uma URL contendo /live/xxx, onde xxx representa qualquer nome de arquivo (como hello.jpg ou hello.html), para /image/live/xxx. Isso adiciona o prefixo /image ao caminho de qualquer arquivo dentro do diretório /live.
Path to Be Rewritten
^/live/(.*)$
Target Path
/image/live/$1
Flag
break
Resultado
Solicitação original:
http://example.com/live/hello.jpgSolicitação de busca na origem após reescrita:
http://example.com/image/live/hello.jpgSolicitação original:
http://example.com/live/hello.htmlSolicitação de busca na origem após reescrita:
http://example.com/image/live/hello.html
Regras subsequentes na lista de Origin Path Rewrite não são avaliadas.
-
Exemplo 6: Encadeamento de regras com o flag None
Considere duas regras de reescrita ativas. A Regra 1 reescreve
^/image_01.png$para/image_02.pngcom o Flag definido como None. A Regra 2 reescreve^(.*)$para/image$1com o Flag definido como None.Resultado:
Solicitação original:
http://example.com/image_01.png-
Solicitação de busca na origem após reescrita:
http://example.com/image/image_02.pngNotaInicialmente, a solicitação corresponde à Regra 1 e é reescrita para
http://example.com/image_02.png. Como o Flag está definido como None, o caminho reescrito passa pela avaliação da Regra 2, que também corresponde. Ocorre então uma segunda reescrita, resultando no caminho final:http://example.com/image/image_02.png.
-
Exemplo 7: Interrupção da avaliação de regras com break
Suponha duas regras de reescrita habilitadas. A Regra 1 reescreve
^/image_01.png$para/image_02.pngcom o Flag definido como break. A Regra 2 reescreve^(.*)$para/image$1com o Flag definido como None. Quando uma solicitação corresponde à Regra 1, o processamento é interrompido e as regras seguintes não são avaliadas, pois o Flag está definido como break.Resultado:
Solicitação original:
http://example.com/image_01.png-
Solicitação de busca na origem após reescrita:
http://example.com/image_02.pngNotaA solicitação primeiro casa com a Regra 1 e é reescrita para
http://example.com/image_02.png. Visto que o Flag da Regra 1 é break, o processamento cessa e nenhuma outra regra é avaliada.