O Alibaba Cloud Dynamic Content Delivery Network (DCDN) permite reescrever URIs de origem. O recurso de reescrita de URI atua nos pontos de presença (POPs) do DCDN sem afetar os serviços internos da plataforma nem as chaves de cache. Este tópico descreve como configurar a reescrita de URL de origem.
Cenários
Quando um recurso no servidor de origem é realocado, sua URI também muda. Se as requisições dos usuários ainda utilizarem a URI original, o DCDN precisa reescrever a URL para redirecionar essas requisições ao novo endereço.
Por exemplo, considere um arquivo de imagem movido do diretório /download/ para o diretório /image/.
Funcionamento
Os POPs comparam as URIs das requisições com as URIs dos recursos solicitados no servidor de origem, seguindo as regras de reescrita de URI. Em seguida, as requisições ou parâmetros específicos são redirecionados ao servidor de origem.
Em uma regra de reescrita, se você definir o parâmetro Flag como None ou Break, apenas o caminho do recurso na URL será reescrito.

Se você definir o parâmetro Flag como enhance break, tanto o caminho do recurso quanto a string de consulta serão reescritos.

Observações de uso
É possível configurar até 50 regras de origin URI rewrite para cada nome de domínio.
O sistema executa as regras de reescrita listadas na aba Back-to-origin URL Rewrite em ordem, de cima para baixo. Alterar essa sequência pode resultar em um comportamento diferente na reescrita.
O recurso de origin URI rewrite difere do recurso de rewrite na página Cache. A funcionalidade de rewrite atua nos POPs do DCDN, afeta os serviços internos e modifica as chaves de cache. Já a origin URI rewrite opera nos POPs que se comunicam com os servidores de origem, sem impactar os serviços internos do DCDN ou alterar as chaves de cache.
Caso o parâmetro Flag de uma URI rewrite rule esteja definido como enhance break, as configurações de reescrita de parâmetros podem entrar em conflito com o recurso de filtragem de parâmetros. Para filtrar parâmetros, escolha no painel de navegação à esquerda do console DCDN. Ao habilitar ambos os recursos para o mesmo domínio, garanta que não haja conflitos entre as configurações. Para mais informações, consulte Filtragem de parâmetros.
Criar uma regra de reescrita de URI de origem
Faça login no console DCDN.
No painel de navegação à esquerda, clique em Domain Names.
Na página Domain Names, localize o domínio desejado e clique em Configure na coluna Actions.
Na árvore de navegação à esquerda do domínio, clique em Origin Fetch.
Clique na aba URI Rewrite.
Na aba URI Rewrite, clique em Add.
-
Na caixa de diálogo URI Rewrite, configure Original URI, Final URI e Flag. A tabela abaixo detalha esses parâmetros.

Parâmetro
Exemplo
Descrição
Original URI
^/hello$
Insira uma URI. Ela deve começar com uma barra (/) e não pode conter http:// ou nomes de domínio. É necessário usar Expressões Regulares Compatíveis com Perl (PCRE).
Final URI
/hello/test
Insira uma URI. Ela deve começar com uma barra (/) e não pode conter http:// ou nomes de domínio. Há suporte para PCRE.
Flag
None
Ao configurar múltiplas regras de reescrita de URI, o DCDN compara as requisições com as regras sequencialmente, de cima para baixo.
break
Se houver várias regras de reescrita de URI e a regra atual for correspondente, as demais serão ignoradas.
Esta opção reescreve apenas o caminho do recurso na URI. Os parâmetros da URL permanecem inalterados. Utilize o recurso reescrita de parâmetros para reescrever parâmetros de URL.
enhance_break
Caso existam múltiplas regras de reescrita de URI e a regra atual seja correspondente, as outras regras são ignoradas.
Diferentemente do Break, o enhance break também reescreve os parâmetros da URL. Contudo, essas configurações podem conflitar com o recurso descrito em Reescrever parâmetros de URL em requisições de retorno à origem. Se desejar ativar ambos, certifique-se de que as definições sejam compatíveis.
-
Clique em OK para aplicar a regra.
Para modificar ou excluir uma regra de reescrita, localize-a na aba URI Rewrite e clique em Modify ou Delete na coluna Actions.
Exemplos de configuração
-
Example 1: Apply a rule whose flag is set to None.
Original URI
^/hello$
Final URI
/index.html
Flag
None
Resultado esperado
Requisição original:
http://aliyundoc.com/helloRequisição final:
http://aliyundoc.com/index.htmlO sistema continua comparando a requisição com outras regras de reescrita de URI listadas na aba URI Rewrite.
-
Example 2: Apply a rule whose flag is set to Break.
Original URI
^/hello.jpg$
Final URI
/image/hello.jpg
Flag
break
Descrição
Requisição original:
http://example.com/hello.jpgRequisição final:
http://example.com/image/hello.jpgO sistema interrompe a comparação da requisição com outras regras de reescrita de URI listadas na aba URI Rewrite.
-
Example 3: Apply a rule whose flag is set to enhance break.
Original URI
^/hello.jpg?code=123$
Final URI
/image/hello.jpg?code=321
Flag
enhance break
Resultado esperado
Requisição original:
http://example.com/hello.jpg?code=123Requisição final:
http://example.com/image/hello.jpg?code=321O sistema interrompe a comparação da requisição com outras regras de reescrita de URI listadas na aba URI Rewrite.
-
Example 4: Add a URI prefix to the root directory if the file name is a variable
Adicione o caminho /image à URI de todos os arquivos no diretório raiz. Por exemplo, reescreva /xxx nas URIs para /image/xxx. Neste caso, xxx representa um nome de arquivo, como /hello.jpg ou /hello.html.
Original URI
^(.*)$
Nota^(.*)$ corresponde a qualquer caractere, e um par de parênteses () representa um grupo. Use $1 na URI final para referenciar variáveis desse grupo.
Final URI
/image$1
Nota$1 é o primeiro padrão especial de substituição, representando o conteúdo correspondente à expressão dentro do primeiro par de parênteses () em uma expressão regular. $2 é o segundo padrão especial, referente ao conteúdo do segundo par de parênteses (). $n indica o enésimo padrão especial de substituição.
Flag
break
Resultado esperado
Requisição original:
http://example.com/hello.jpgRequisição final:
http://example.com/image/hello.jpgRequisição original:
http://example.com/hello.htmlRequisição final:
http://example.com/image/hello.html
O sistema interrompe a comparação da requisição com outras regras de reescrita de URI listadas na aba URI Rewrite.
-
Example 5: Add a URI prefix to a specific directory if the file name is a variable.
Adicione o caminho /image à URI de todos os arquivos no diretório /live. Por exemplo, reescreva /live/xxx nas URIs para /image/live/xxx. Aqui, xxx corresponde a um nome de arquivo, como /live/hello.jpg ou /live/hello.html.
Original URI
^/live/(.*)$
Final URI
/image/live/$1
Flag
break
Resultado esperado
Requisição original:
http://example.com/live/hello.jpgRequisição final:
http://example.com/image/live/hello.jpgRequisição original:
http://example.com/live/hello.htmlRequisição final:
http://example.com/image/live/hello.html
O sistema interrompe a comparação da requisição com outras regras de reescrita de URI listadas na aba URI Rewrite.
-
Example 6: Apply only the rule whose flag is set to None when multiple rules are configured.
Crie duas regras de reescrita de URI, conforme ilustrado na figura a seguir.

Resultado esperado:
Requisição original:
http://example.com/image_01.png-
Requisição final:
http://example.com/image/image_02.pngNotaA requisição corresponde à primeira regra e é reescrita para
http://example.com/image_02.png. Posteriormente, ela corresponde à segunda regra e é reescrita parahttp://example.com/image/image_02.png. -
Example 7: Apply the rule whose flag is set to Break when multiple rules are configured.
Crie duas regras de reescrita de URI, conforme mostrado na figura abaixo.

Resultado esperado:
Requisição original:
http://example.com/image_01.png-
Requisição final:
http://example.com/image_02.pngNotaA requisição corresponde à primeira regra e é reescrita para
http://example.com/image_02.png. As demais regras são ignoradas.
Tópicos relacionados