#
#  URL Remapping Config File
#
# 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|ICP_QUERY|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/
#
#  Explaination: 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.
#
