I'm using apache 2.4.23 under CentOS.
I have requests that are coming into apache that look like:

/path?key1=value&key2=value

I'm trying to remove the key1 parameter and value from the query string
(such that it would be /path?key2=value)
I managed to do this with a modified rewrite example form the apache wiki:

RewriteCond %{QUERY_STRING} (.*)(?:^|&)key1=(?:[^&]*)((?:&|$).*)
RewriteCond %1%2 (^|&)([^&].*|$)
RewriteRule ^(/path)$ $1?%2 [P]

I use [P] because /path is a webapp path that gets forwarded to tomcat with
ProxyPass. Without it, i'll get a 404, which is understandable.

My problem is, i also have a disk cache enabled on /path, so when i use the
above rewrite rule, even though the query string is rewritten correctly, in
the cache header files, i see that the original query string is in there
and used to created a cache file, i.e. creating different cache files for
different values of key1 instead of just for key2.

Is there any way i can rewrite the query string so that only the modified
query string is used to create the cache files?
The only way i found so far is to do a redirect in the rewrite rule with
[R]. I just don't want the extra overhead that goes along with that.

Thanks,

-Tony

Reply via email to