Alibaba Cloud Dynamic Content Delivery Network (DCDN) permite reescribir las URI de origen. La función de reescritura de URI se aplica en los puntos de presencia (POP) de DCDN, sin afectar los servicios internos de DCDN ni las claves de caché. En este tema se describe cómo configurar la reescritura de URL de origen.
Escenarios
Si un recurso del servidor de origen cambia de ubicación, la URI del recurso también cambia. Si las solicitudes de los usuarios utilizan la URI original, DCDN debe reescribir la URL para que las solicitudes se redirijan a la nueva URL.
Por ejemplo, un archivo de imagen se mueve del directorio /download/ al directorio /image/.
Funcionamiento
Los POP comparan las URI de las solicitudes con las URI de los recursos solicitados en el servidor de origen, según las reglas de reescritura de URI. Después, las solicitudes o parámetros específicos de la solicitud se redirigen al servidor de origen.
En una regla de reescritura, si establece el parámetro Flag en None o Break, solo se reescribe la ruta del recurso en la URL.

Si establece el parámetro Flag en enhance break, se reescriben la ruta del recurso y la cadena de consulta.

Notas de uso
Puede configurar hasta 50 reglas de origin URI rewrite para cada nombre de dominio.
El sistema ejecuta las reglas de reescritura listadas en la pestaña Back-to-origin URL Rewrite de arriba hacia abajo. Un cambio en este orden puede generar un resultado de reescritura distinto.
La función origin URI rewrite es diferente de la función rewrite de la página Cache. La función rewrite se aplica en los POP de DCDN, afecta los servicios internos de DCDN y reescribe las claves de caché. La función origin URI rewrite opera en los POP de DCDN que se comunican con los servidores de origen. No afecta los servicios internos de DCDN ni reescribe las claves de caché.
Si establece el parámetro Flag de una URI rewrite rule en enhance break, la configuración de reescritura de parámetros puede entrar en conflicto con la función de filtrado de parámetros. Para filtrar parámetros, seleccione en el panel de navegación izquierdo de la consola de DCDN. Si configura ambas funciones para el mismo nombre de dominio, compruebe que sus configuraciones no entren en conflicto. Para obtener más información, consulte Parameter filtering.
Creación de una regla de reescritura de URI de origen
Inicie sesión en la consola de DCDN.
En el panel de navegación izquierdo, haga clic en Domain Names.
En la página Domain Names, busque el nombre de dominio que desea gestionar y haga clic en Configure en la columna Actions.
En el árbol de navegación izquierdo del nombre de dominio, haga clic en Origin Fetch.
Haga clic en la pestaña URI Rewrite.
En la pestaña URI Rewrite, haga clic en Add.
-
En el cuadro de diálogo URI Rewrite, configure Original URI, Final URI y Flag. A continuación se describen los parámetros.

Parámetro
Ejemplo
Descripción
Original URI
^/hello$
Introduzca una URI. Debe comenzar con una barra diagonal (/) y no puede contener http:// ni nombres de dominio. Además, debe incluir expresiones regulares compatibles con Perl (PCRE).
Final URI
/hello/test
Introduzca una URI. Debe comenzar con una barra diagonal (/) y no puede contener http:// ni nombres de dominio. Es compatible con PCRE.
Flag
None
Si configura varias reglas de reescritura de URI, DCDN compara las solicitudes con las reglas de arriba hacia abajo.
break
Si configura varias reglas de reescritura de URI y la regla actual coincide, se omiten las demás reglas.
Esta opción solo reescribe la ruta del recurso en la URI. Los parámetros de la URL permanecen sin cambios. Puede usar la función parameter rewrite para reescribir los parámetros de la URL.
enhance_break
Si configura varias reglas de reescritura de URI y la regla actual coincide, se omiten las demás reglas.
A diferencia de Break, enhance break reescribe los parámetros de la URL. Sin embargo, la configuración de reescritura de parámetros puede entrar en conflicto con la función descrita en Rewrite URL parameters in back-to-origin requests. Si desea habilitar ambas funciones, compruebe que sus configuraciones no entren en conflicto.
-
Haga clic en OK para aplicar la regla.
Para modificar o eliminar una regla de reescritura, búsquela en la pestaña URI Rewrite y haga clic en Modify o Delete en la columna Actions.
Ejemplos de configuración
-
Example 1: Apply a rule whose flag is set to None.
Original URI
^/hello$
Final URI
/index.html
Flag
None
Resultado esperado
Solicitud original:
http://aliyundoc.com/helloSolicitud final:
http://aliyundoc.com/index.htmlEl sistema continúa comparando la solicitud con las demás reglas de reescritura de URI listadas en la pestaña URI Rewrite.
-
Example 2: Apply a rule whose flag is set to Break.
Original URI
^/hello.jpg$
Final URI
/image/hello.jpg
Flag
break
Descripción
Solicitud original:
http://example.com/hello.jpgSolicitud final:
http://example.com/image/hello.jpgEl sistema deja de comparar la solicitud con las demás reglas de reescritura de URI listadas en la pestaña 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
Solicitud original:
http://example.com/hello.jpg?code=123Solicitud final:
http://example.com/image/hello.jpg?code=321El sistema deja de comparar la solicitud con las demás reglas de reescritura de URI listadas en la pestaña URI Rewrite.
-
Example 4: Add a URI prefix to the root directory if the file name is a variable
Agregue la ruta /image a la URI de todos los archivos del directorio raíz. Por ejemplo, reescriba /xxx en las URI como /image/xxx. En este ejemplo, xxx es un nombre de archivo, como /hello.jpg o /hello.html.
Original URI
^(.*)$
Nota^(.*)$ coincide con cualquier carácter y un par de paréntesis () representa un grupo. Puede usar $1 en la URI final para llamar a las variables del grupo.
Final URI
/image$1
Nota$1 es el primer patrón de reemplazo especial, que representa el contenido coincidente con la expresión dentro del primer par de paréntesis () de una expresión regular. $2 es el segundo patrón de reemplazo especial, que representa el contenido coincidente con la expresión dentro del segundo par de paréntesis (). $n representa el n-ésimo patrón de reemplazo especial.
Flag
break
Resultado esperado
Solicitud original:
http://example.com/hello.jpgSolicitud final:
http://example.com/image/hello.jpgSolicitud original:
http://example.com/hello.htmlSolicitud final:
http://example.com/image/hello.html
El sistema deja de comparar la solicitud con las demás reglas de reescritura de URI listadas en la pestaña URI Rewrite.
-
Example 5: Add a URI prefix to a specific directory if the file name is a variable.
Agregue la ruta /image a la URI de todos los archivos del directorio /live. Por ejemplo, reescriba /live/xxx en las URI como /image/live/xxx. En este ejemplo, xxx es un nombre de archivo, como /live/hello.jpg o /live/hello.html.
Original URI
^/live/(.*)$
Final URI
/image/live/$1
Flag
break
Resultado esperado
Solicitud original:
http://example.com/live/hello.jpgSolicitud final:
http://example.com/image/live/hello.jpgSolicitud original:
http://example.com/live/hello.htmlSolicitud final:
http://example.com/image/live/hello.html
El sistema deja de comparar la solicitud con las demás reglas de reescritura de URI listadas en la pestaña URI Rewrite.
-
Example 6: Apply only the rule whose flag is set to None when multiple rules are configured.
Cree dos reglas de reescritura de URI, como se muestra en la siguiente figura.

Resultado esperado:
Solicitud original:
http://example.com/image_01.png-
Solicitud final:
http://example.com/image/image_02.pngNotaLa solicitud coincide con la primera regla y se reescribe como
http://example.com/image_02.png. Luego, coincide con la segunda regla y se reescribe comohttp://example.com/image/image_02.png. -
Example 7: Apply the rule whose flag is set to Break when multiple rules are configured.
Cree dos reglas de reescritura de URI, como se muestra en la siguiente figura.

Resultado esperado:
Solicitud original:
http://example.com/image_01.png-
Solicitud final:
http://example.com/image_02.pngNotaLa solicitud coincide con la primera regla y se reescribe como
http://example.com/image_02.png. Las demás reglas se omiten.