I have observed that if there are multiple plugins in a remap plugin chain, 
TSHttpTxnEffectiveUrlStringGet() in the 1st plugin gets the unmapped URL, while 
in all other plugins it gets the mapped URL. Of course we can instead use 
TSHttpTxnPristineUrlGet() to get the original URL. But many plugins like 
regex_remap and cacheurl use this EffectiveUrl as request URL and thus they may 
get either mapped or unmapped URL depending on the position they are in the 
plugin chain.

ATS code shows that in RemapPlugins::run_single_remap(), in many cases it 
invokes url_rewrite_remap_request() to rewrite the request URL after the 1st 
plugin is run. Even the first plugin does nothing, the request URL is still 

Why ATS needs the above logic (“After running the first plugin, rewrite the 
request URL.”)? If this logic is required, is it valid that an empty plugin 
which does nothing should affect the request URL?


Reply via email to