# Line beginning with or text after '#' until the end of line are comments and ignored # Each line is parsed and splitted by space|tab # Each line have to be 2 columns, # one for source [required] and one for destination [optional] # A line with only a source element act as a master domain # A line with the source ending with '.' is a subdomain for preceding master domain # First match wins! Keep the less specific tests last # Equivalent www.exemple.com 8080 www.exemple.com 8080 www.exemple.com 8080 www.exemple.com 8080 # some reminder # Master domain, subdomains exemple.com # the master domain . 8080 # http://exemple.com www. 8080 # http://www.exemple.com sub1. 9888 # http://sub1.exemple.com subdomain. 9169 # http://subdomain.exemple.com sub2. 3333 # http://sub2.exemple.com # Wildcards tests foo*.exemple.com 6476 # foobar.exemple.com or foolish.exemple.com www.my-*-site.com 5740 # www.my-cool-site.com or www.my-bad-site.com exemple.* 23456 # exemple.fr or exemple.de or exemple.org exemple.com tag-*. 1111 # tag-music.exemple.com *---*. 2222 # awe---some.exemple.com *. 3333 # less specific last: toto.exemple.com admin.* 6666 # no more under exemple.com: admin.google.fr or admin.my-site.net # Regexp tests (must start and end with a '/') /exemple\.(fr|de|it|com)/ 8888 # don't forget to escape regexp chars like '.' /(.*?)\.exemple\.com/ 4567 # all javascript regexp are correct /(.*?)-+(coin|token)\.exemple\.com/ 443 # parenthesis capture can be used later (see rewriting) exemple\.(fr|de|it|com)/ # to mix regexp and master domain you can cut the reg in 2 # subdomains still have to end with '.' /some.{3,5}\. 1234 # something.exemple.de or somehow.exemple.com /other.{4}\. 3456 # otherwise.exemple.fr or otherhood.exemple.it # Rewriting url using es6 string substitutions `Hello ${who} !` # /!\ spaces are prohibited in substitution ! # using precooked variables: subDomain, domain, tld, path www.exemple.com 8080/${domain}/www/ # 8080/exemple/www/ www.exemple.com 8080/${tld}-${domain}/${subDomain}/ # 8080/com-exemple/www/ *.exemple.com 6757/static/${subDomain}-files/${path} # 6757/static/www-files/... or 6757/static/img-files/... # using regexp captures (wildcards are converted into regexp also) exemple.com tag-*. 6776/tags/${match[1]}/ *---*. ${match[1]=='foo'?6666:6667}/apps/${match[2]}/ *. 6776/${match[1]}-files/ www.exemple.* 80/lang/${tld}/ admin.* 6666/${domain=='exemple'?'docs':'administration'}/${domain}-${tld}/ /(foo)-(bar)\.exemple\.city/ 31316/tag/${match[2]}-${match[1]}/ *.exemple.city 31316/city/${subDomain}/