I believe there was a glitch in RFC 2616; it defines
Request-URI = "*" | absoluteURI | abs_path
where it gets abs_path by reference to RFC 2396; however, the
abs_path in RFC 2396 doesn't include a possible query part:
hier_part = ( net_path | abs_path ) [ "?" query ]
net_path = "//" authority [ abs_path ]
abs_path = "/" path_segments
I think what happened was that we updated the URI reference
late in the game, but between the RFC 1808 URL definition
and the RFC 2616 definition, the BNF changed and defined
abs_path differently.
To fix this, the simplest thing to do is to patch
Request-URI = "*" | absoluteURI | abs_path [ "?" query ]
In retrospect, changing the BNF in RFC 2396 (Generic URI syntax)
was a big mistake; it's led to several problems of this form.
Thanks to Jeff de La Beaujardiere and Craig Bruce for reporting
this.