#
# remap.config - URL Remapping Config File
#
# Documentation:
#    https://docs.trafficserver.apache.org/en/latest/admin-guide/files/remap.config.en.html
#
# Using remap.config allows you to accomplish two things:
#
#  1) Rewrite a URL (from the client) before sending it to the Origin Server.
#  2) Protect the proxy server, to only allow certain requests.
#
#  With the default configurations, at least one remap rule is required. This
#  can be relaxed with the following configuration in records.config:
#
#   CONFIG proxy.config.url_remap.remap_required INT 0
#
# Be aware, doing so makes the proxy a generic, open-relay!
#
#  The format is:
#      <map_type> client-URL origin-server-URL <tag_value> <filtering>
#
# Where client-URL and origin-server-URL are both of the format
#    <scheme>://<host>:<port>/<path_prefix>
#
#  The <tag_value> directive is optional and can be different for different
#  types of <map_type>. The <filtering arguments> are optional ACL-like
#  arguments unique for each remap rule
#
#  Six different types of mappings are possible:
#     map
#     map_with_referer
#     map_with_recv_port
#     reverse_map
#     redirect
#     redirect_temporary
#
#  Each of these map types can be prefixed with the string 'regex_' to indicate
#  that the rule will have regular expression strings. See the last part of
#  this description for more information on regex support.
#
#  The 'map' mapping is the most straightforward.  Requests that match the
#  client-URL are rewritten into the origin-server-URL. The user agent will see
#  the page on the remapped URL, but will not be notified of the address
#  change.
#
#  The 'map_with_referer' is an extended version of 'map', which can be used to
#  activate the so-called "deep linking protection" feature available in
#  Apache Traffic Server.
#
#  The 'map_with_recv_port' is exactly like 'map' except that it uses the port
#  at which the request was received to perform the mapping instead of the port
#  present in the request. When present, 'map_with_recv_port' mappings are
#  checked first. If there is a match, then it is chosen without evaluating the
#  "regular" forward mapping rules.
#
#  The 'reverse_map' mapping is used to rewrite location headers sent by the
#  origin server.  The 'redirect' mapping creates a permanent redirect message
#  and informs the browser of the URL change.
#
#  The 'redirect_temporary' mapping acts in the same way but tells the browser
#  that this redirect is only temporary.  We need to map the URL in reverse
#  proxy mode so that user agents know to contact Traffic Server and not
#  attempt to contact the Origin Server directly.
#
#  For example, you can set up a reverse proxy for www.example.com with the
#  real content situated at server1.example.com with the rules:
#
#    map          http://www.example.com/      http://server1.example.com/
#    reverse_map  http://server1.example.com/  http://www.example.com/
#
#  Or you could permanently redirect users trying to access www.oldserver.com
#  to www.newserver.com with the following rule:
#
#    redirect	http://www.oldserver.com/    http://www.newserver.com
#
#  If the redirect is only temporary, you want to only temporarily remap the
#  URL.  You could use the following rule to divert users away from a failed
#  server:
#
#  redirect_temporary http://broken.firm.com http://working.firm.com
#
#  In order to use "deep linking protection" Traffic Server's feature, the
#  'map_with_referer' mapping scheme must be used. In general, the format of is
#  the following:
#
#     map_with_referer client-URL origin-server-URL redirect-URL regex1 [regex2 ...]
#
#  'redirect-URL' is a redirection URL specified according to RFC 2616 and can
#  contain special formatting instructions for run-time modifications of the
#  resulting redirection URL.  All regexes Perl compatible  regular expressions,
#  which describes the content of the "Referer" header which must be
#  verified. In case an actual request does not have "Referer" header or it
#  does not match with referer regular expression, the HTTP request will be
#  redirected to 'redirect-URL'.
#
#  At least one regular expressions must be specified in order to activate
#  'deep linking protection'.  There are limitations for the number of referer
#  regular expression strings - 2048.  In order to enable the 'deep linking
#  protection' feature in Traffic Server, configure records.config with:
#
#    CONFIG proxy.config.http.referer_filter INT 1
#
#  In order to enable run-time formatting for redirect0URL, configure
#
#    CONFIG proxy.config.http.referer_format_redirect INT 1
#
#  When run-time formatting for redirect-URL was enabled the following format
#  symbols can be used:
#
#    %r - to substitute original "Referer" header string
#    %f - to substitute client-URL from 'map_with_referer' record
#    %t - to substitute origin-server-URL from 'map_with_referer' record
#    %o - to substitute request URL to origin server, which was created a
#         the result of a mapping operation
#
#  Note: There is a special referer type "~*" that can be used in order to
#  specify that the Referer header is optional in the request.  If "~*" referer
#  was used in map_with_referer mapping, only requests with Referer header will
#  be verified for validity.  If the "~" symbol was specified before referer
#  regular expression, it means that the request with a matching referer header
#  will be redirected to redirectURL. It can be used to create a so-called
#  negative referer list.  If "*" was used as a referer regular expression -
#  all referers are allowed.  Various combinations of "*" and "~" in a referer
#  list can be used to create different filtering rules.
#
#  Examples:
#    map_with_referer http://y.foo.bar.com/x/yy/  http://foo.bar.com/x/yy/ http://games.bar.com/new_games .*\.bar\.com www.bar-friends.com
#
#  Explanation: Referer header must be in the request, only ".*\.bar\.com"
#  and "www.bar-friends.com" are allowed.
#
#    map_with_referer http://y.foo.bar.com/x/yy/  http://foo.bar.com/x/yy/ http://games.bar.com/new_games * ~.*\.evil\.com
#
#  Explanation: Referer header must be in the request but all referers are
#  allowed except ".*\.evil\.com".
#
#    map_with_referer http://y.foo.bar.com/x/yy/  http://foo.bar.com/x/yy/ http://games.bar.com/error ~* * ~.*\.evil\.com
#
#  Explanation: Referer header is optional. However, if Referer header exists,
#  only request from ".*\.evil\.com" will be redirected to redirect-URL.
#
#  There are optional filtering arguments that can be specified at the end of the mapping definition line:
#
#    @action=allow|deny
#    @src_ip=IP-address
#    @method=HTTP method string (CONNECT|DELETE|GET|HEAD|OPTIONS|POST|PURGE|PUT|TRACE|PUSH)
#    @plugin=<plugin_path>
#    @pparam=<plugin_param>
#
#  There is no limitation for the number of filtering arguments.
#
#  Example:
#    map http://foo.cow.com/ http://bar.cow.com @src_ip=10.72.118.51-10.72.118.62 @method=GET @method=DELETE @src_ip=192.168.0.1-192.168.0.254 @action=allow @method=PUT
#
#  Traffic Server supports WebSockets but it must be enabled via remap. WebSocket upgrades are automatically
#  detected when there exists a remap rule containing a ws:// scheme.
#
#  Example:
#     map ws://bar.com/ ws://foo.com/
#
#  Explanation: When a request comes in with the appropriate upgrade headers, Traffic Server will use this
#   remap rule in an attempt to establish and maintain a websocket connection.
#
#  Named filters can be created and applied to blocks of mappings
#  using the .definefilter, .activatefilter, and .deactivatefilter
#  directives. Named filters must be defined using .definefilter
#  before being used. Once defined, .activatefilter can used to
#  activate a filter for all mappings that follow until deactivated
#  with .deactivatefilter.
#
#  Example:
#    .definefilter disable_delete_purge @action=deny @method=delete @method=purge
#    .definefilter internal_only @action=allow @src_ip=192.168.0.1-192.168.0.254 @src_ip=10.0.0.1-10.0.0.254
#
#    .activatefilter disable_delete_purge
#
#    map http://foo.example.com/ http://bar.example.com/
#
#    .activatefilter internal_only
#    map http://www.example.com/admin http://internal.example.com/admin
#    .deactivatefilter internal_only
#
#    map http://www.example.com/ http://internal.example.com/
#
#
#  Regex support: Regular expressions can be specified in the rules with the
#  following limitations:
#
#  1) Only the host field can have regexes - the scheme, port and other
#     fields cannot.
#  2) The number of capturing sub-patterns is limited to 9;
#     this means $0 through $9 can be used as substitution place holders ($0
#     will be the entire input string)
#  3) The number of substitutions in the expansion string is limited to 10.
#
