Example rules
The following sections contain example single redirect rule configurations.
Redirect visitors to the new URL of a specific page
This example static redirect for zone example.com
will redirect visitors requesting the /contact-us/
page to the new page URL /contacts/
.
When incoming requests match
- Field: URI Path
- Operator: equals
- Value:
/contact-us/
If you are using the Expression Editor, enter the following expression:
http.request.uri.path eq "/contact-us/"
Then
- Type: Static
- URL:
/contacts/
- Status code: 301
- Preserve query string: Enabled
For example, the redirect rule would perform the following redirects:
Request URL | Target URL | Status code |
---|---|---|
example.com/contact-us/ |
example.com/contacts/ |
301 |
example.com/contact-us/?state=TX |
example.com/contacts/?state=TX |
301 |
example.com/team/ |
(unchanged) | n/a |
Redirect all requests to a different hostname
This example dynamic redirect will redirect all requests for smallshop.example.com
to a different hostname using HTTPS, keeping the original path and query string.
When incoming requests match
- Field: Hostname
- Operator: equals
- Value:
smallshop.example.com
If you are using the Expression Editor, enter the following expression:
(http.host eq "smallshop.example.com")
Then
- Type: Dynamic
- Expression:
concat("https://globalstore.example.net", http.request.uri.path)
- Status code: 301
- Preserve query string: Enabled
For example, the redirect rule would perform the following redirects:
Request URL | Target URL | Status code |
---|---|---|
http://smallshop.example.com/ |
https://globalstore.example.net/ |
301 |
http://smallshop.example.com/admin/?logged_out=true |
https://globalstore.example.net/admin/?logged_out=true |
301 |
https://smallshop.example.com/?all_items=1 |
https://globalstore.example.net/?all_items=1 |
301 |
http://example.com/about/ |
(unchanged) | n/a |
Redirect admin area requests to HTTPS
This example dynamic redirect for zone example.com
will redirect requests for the administration area of a specific subdomain (store.example.com
) to HTTPS, keeping the original path and query string.
When incoming requests match
- Field: SSL/HTTPS
- Value: Off
And
- Field: Hostname
- Operator: equals
- Value:
store.example.com
And
- Field: URI Path
- Operator: starts with
- Value:
/admin
If you are using the Expression Editor, enter the following expression:
(not ssl and http.host eq "store.example.com" and starts_with(http.request.uri.path, "/admin"))
Then
- Type: Dynamic
- Expression:
concat("https://", http.host, http.request.uri.path)
- Status code: 301
- Preserve query string: Enabled
The rule includes SSL/HTTPS: Off (not ssl
in the rule expression) to avoid redirect loops.
For example, the redirect rule would perform the following redirects:
Request URL | Target URL | Status code |
---|---|---|
http://store.example.com/admin/products/ |
https://store.example.com/admin/products/ |
301 |
https://store.example.com/admin/products/ |
(unchanged) | n/a |
http://store.example.com/admin/?logged_out=true |
https://store.example.com/admin/?logged_out=true |
301 |
http://store.example.com/?all_items=true |
(unchanged) | n/a |
http://example.com/admin/ |
(unchanged) | n/a |
Redirect UK and France visitors to their specific subdomains
This example dynamic redirect for zone example.com
will redirect United Kingdom and France visitors requesting the website’s root path (/
) to their localized subdomains https://gb.example.com
and https://fr.example.com
, respectively.
When incoming requests match
Using the Expression Editor:
(ip.geoip.country eq "GB" or ip.geoip.country eq "FR") and http.request.uri.path eq "/"
Then
- Type: Dynamic
- Expression:
lower(concat("https://", ip.geoip.country, ".example.com"))
- Status code: 301
For example, the redirect rule would perform the following redirects:
Visitor country | Request URL | Target URL | Status code |
---|---|---|---|
United Kingdom | example.com |
https://gb.example.com |
301 |
France | example.com |
https://fr.example.com |
301 |
United States | example.com |
(unchanged) | n/a |
Remove locale information from URL path
This example dynamic redirect for zone example.com
will redirect visitors from an old URL format that included the locale (for example, /en-us/<page_name>
) to the new format /<page_name>
.
When incoming requests match
- Field: URI Path
- Operator: matches regex
- Value:
^/[A-Za-z]{2}-[A-Za-z]{2}/
If you are using the Expression Editor, enter the following expression:
http.request.uri.path matches "^/[A-Za-z]{2}-[A-Za-z]{2}/"
Then
- Type: Dynamic
- Expression:
regex_replace(http.request.uri.path, "^/[A-Za-z]{2}-[A-Za-z]{2}/(.*)", "/${1}")
- Status code: 301
- Preserve query string: Enabled
The function regex_replace()
allows you to extract parts of the URL using regular expressions’ capture groups. Create capture groups by putting part of the regular expression in parentheses. Then, reference a capture group using ${<num>}
in the replacement string, where <num>
is the number of the capture group.
For example, the redirect rule would perform the following redirects:
Request URL | Target URL | Status code |
---|---|---|
example.com/en-us/meet-our-team |
example.com/meet-our-team |
301 |
example.com/pt-BR/meet-our-team |
example.com/meet-our-team |
301 |
example.com/en-us/calendar?view=month |
example.com/calendar?view=month |
301 |
example.com/meet-our-team |
(unchanged) | n/a |
example.com/robots.txt |
(unchanged) | n/a |