--- httpd-2.2.31/modules/mappers/mod_rewrite.c.ORIG 2016-01-05 15:11:44.189957990 -0800 +++ httpd-2.2.31/modules/mappers/mod_rewrite.c 2016-01-06 08:46:57.393521281 -0800 @@ -54,6 +54,7 @@ #include "apr_signal.h" #include "apr_global_mutex.h" #include "apr_dbm.h" +#include "apr_escape.h" #if APR_HAS_THREADS #include "apr_thread_mutex.h" @@ -1110,6 +1111,12 @@ return key; } +static char *rewrite_mapfunc_urlencode(request_rec *r, char *key) +{ + return (char *)apr_pescape_urlencoded(r->pool, key); +} + + static char *rewrite_mapfunc_escape(request_rec *r, char *key) { return ap_escape_uri(r->pool, key); @@ -4186,6 +4193,7 @@ map_pfn_register("toupper", rewrite_mapfunc_toupper); map_pfn_register("escape", rewrite_mapfunc_escape); map_pfn_register("unescape", rewrite_mapfunc_unescape); + map_pfn_register("urlencode", rewrite_mapfunc_urlencode); } return OK; }