Alibaba Cloud Dynamic Content Delivery Network (DCDN) allows you to rewrite origin URIs. The URI rewrite feature takes effect on DCDN points of presence (POPs) without affecting the internal services of DCDN or cache keys. This topic describes how to configure origin URL rewrite.
Scenarios
If a resource on the origin server relocates, the URI of the resource also changes. If user requests use the original URI, DCDN must rewrite the URL so that the requests can be redirected to the new URL.
For example, an image file is moved from the /download/ directory to the /image/ directory.
How it works
POPs match request URIs against the URIs of the requested resources on the origin server based on URI rewrite rules. Then, the requests or specific request parameters are redirected to the origin server.
In a rewrite rule, if you set the Flag parameter to None or Break, only the resource path in the URL is rewritten.
If you set the Flag parameter to enhance break, the resource path and query string are rewritten.
Usage notes
You can configure up to 50 origin URI rewrite rules for each domain name.
The system runs the rewrite rules that are listed on the Back-to-origin URL Rewrite tab in order from top to bottom. A change to this order may lead to a different rewrite result.
The origin URI rewrite feature is different from the rewrite feature on the Cache page. The rewrite feature takes effect on DCDN POPs, affects the internal services of DCDN, and rewrites cache keys. The origin URI rewrite feature functions on the DCDN POPs that communicate with origin servers and does not affect the internal services of DCDN or rewrite cache keys.
If you set the Flag parameter of a URI rewrite rule to enhance break, the parameter rewrite settings may conflict with the settings of the parameter filtering feature. To filter parameters, choose Parameter filtering.
in the left-side navigation pane of the DCDN console. If you configure the two features for the same domain name, make sure that the settings do not conflict with each other. For more information, see
Create an origin URI rewrite rule
- Log on to the DCDN console.
- In the left-side navigation pane, click Domain Names.
- On the Domain Names page, find the domain name that you want to manage and click Configure in the Actions column.
- In the left-side navigation pane of the domain name, click Origin Fetch.
Click the URI Rewrite tab.
On the URI Rewrite tab, click Add.
In the URI Rewrite dialog box, configure Original URI, Final URI, and Flag. The following table describes the parameters
Parameter
Example
Description
Original URI
^/hello$
Enter a URI. The URI must start with a forward slash (/) and cannot contain http:// or domain names. The URI must contain Perl Compatible Regular Expressions (PCRE).
Final URI
/hello/test
Enter a URI. The URI must start with a forward slash (/) and cannot contain http:// or domain names. PCRE is supported.
Flag
None
If you configure multiple URI rewrite rules, DCDN matches requests against the rules in order from top to bottom.
break
If you configure multiple URI rewrite rules, and the current rule is matched, other rules are skipped.
This option rewrites only the resource path in the URI. The URL parameters remain unchanged. You can use the parameter rewrite feature to rewrite URL parameters.
enhance_break
If you configure multiple URI rewrite rules, and the current rule is matched, other rules are skipped.
Compared with Break, enhance break rewrites URL parameters. However, the parameter rewrite settings may conflict with the settings of the feature that is described in Rewrite URL parameters in back-to-origin requests feature. If you want to enable both features, make sure that the settings do not conflict with each other.
Click OK to apply the rule.
To modify or delete a rewrite rule, find the rule on the URI Rewrite tab and click Modify or Delete in the Actions column.
Configuration examples
Example 1: Apply a rule whose flag is set to None.
Original URI
^/hello$
Final URI
/index.html
Flag
None
Expected result
Original request:
http://aliyundoc.com/hello
Final request:
http://aliyundoc.com/index.html
The system continues to match the request against other URI rewrite rules that are listed on the URI Rewrite tab.
Example 2: Apply a rule whose flag is set to Break.
Original URI
^/hello.jpg$
Final URI
/image/hello.jpg
Flag
break
Description
Original request:
http://example.com/hello.jpg
Final request:
http://example.com/image/hello.jpg
The system stops matching the request against other URI rewrite rules that are listed on the URI Rewrite tab.
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
Expected result
Original request:
http://example.com/hello.jpg?code=123
Final request:
http://example.com/image/hello.jpg?code=321
The system stops matching the request against other URI rewrite rules that are listed on the URI Rewrite tab.
Example 4: Add a URI prefix to the root directory if the file name is a variable
Add the /image path to the URI of all files in the root directory. For example, rewrite /xxx in URIs to /image/xxx. In this example, xxx is a file name, such as /hello.jpg or /hello.html.
Original URI
^(.*)$
Note^(.*)$ matches any characters, and a pair of parentheses () represents a group. You can use $1 in the final URI to call variables in the group.
Final URI
/image$1
Note$1 is the first special replacement pattern, which represents the content that matches the expression in the first pair of parentheses () in a regular expression. $2 is the second special replacement pattern, which represents the content that matches the expression in the second pair of parentheses (). $n represents the nth special replacement pattern.
Flag
break
Expected result
Original request:
http://example.com/hello.jpg
Final request:
http://example.com/image/hello.jpg
Original request:
http://example.com/hello.html
Final request:
http://example.com/image/hello.html
The system stops matching the request against other URI rewrite rules that are listed on the URI Rewrite tab.
Example 5: Add a URI prefix to a specific directory if the file name is a variable.
Add the /image path to the URI of all files in the /live directory. For example, rewrite /live/xxx in URIs to /image/live/xxx. In this example, xxx is a file name, such as /live/hello.jpg or /live/hello.html.
Original URI
^/live/(.*)$
Final URI
/image/live/$1
Flag
break
Expected result
Original request:
http://example.com/live/hello.jpg
Final request:
http://example.com/image/live/hello.jpg
Original request:
http://example.com/live/hello.html
Final request:
http://example.com/image/live/hello.html
The system stops matching the request against other URI rewrite rules that are listed on the URI Rewrite tab.
Example 6: Apply only the rule whose flag is set to None when multiple rules are configured.
Create two URI rewrite rules, as shown in the following figure.
Expected result:
Original request:
http://example.com/image_01.png
Final request:
http://example.com/image/image_02.png
NoteThe request matches the first rule and is rewritten to
http://example.com/image_02.png
. Then, the request matches the second rule and is rewritten tohttp://example.com/image/image_02.png
.Example 7: Apply the rule whose flag is set to Break when multiple rules are configured.
Create two URI rewrite rules, as shown in the following figure.
Expected result:
Original request:
http://example.com/image_01.png
Final request:
http://example.com/image_02.png
NoteThe request matches the first rule and is rewritten to
http://example.com/image_02.png
. Other rules are skipped.