When the Application's requirements suggests that the redirect rules should be registered in one place then use the Rewrite Middleware. The Rewrite Middleware supports rewrite URL path, subdomain or host based on a regular expression search and replace.
The syntax is familiar to the majority of the backend developers out there and it looks like that:
REDIRECT_CODE_DIGITS
PATTERN_REGEX
TARGET_REPL
301
/seo/(.*)
/$1
The above will redirect all requests from relative path /seo/* to /* using the 301 (Moved Permanently) HTTP Status Code. Learn more about regex.
Usage
First of all, you should import the builtin middleware as follows:
It is highly recommended that you should register the Rewrite Middleware as a Router Wrapper through Application.WrapRouter right before Application.Listen/Run.
The "redirects.yml" file looks like that:
RedirectMatch:# Redirects /seo/* to /* - 301 /seo/(.*) /$1# Redirects /docs/v12* to /docs - 301 /docs/v12(.*) /docs# Redirects /old(.*) to / - 301 /old(.*) /# Redirects http or https://test.* to http or https://newtest.* - 301 ^(http|https)://test.(.*) $1://newtest.$2# Handles /*.json or .xml as *?format=json or xml,# without redirect. See /users route.# When Code is 0 then it does not redirect the request,# instead it changes the request URL# and leaves a route handle the request. - 0 /(.*).(json|xml) /$1?format=$2# Redirects root domain to www.# Creation of a www subdomain inside the Application is unnecessary,# all requests are handled by the root Application itself.PrimarySubdomain:www
2. Through code using the New function. Parse errors can be handled and rules can be programmatically stored.