Hi all I'm trying to understand the correct way of escaping path URI components containing special characters, in particular passing the '/' character through as part of the URI.
RFC 2396, section 3.3 says:
path = [ abs_path | opaque_part ]
path_segments = segment *( "/" segment )
segment = *pchar *( ";" param )
param = *pchar
unreserved = alphanum | mark
escaped = "%" hex hex
pchar = unreserved | escaped |
":" | "@" | "&" | "=" | "+" | "$" | ","
The path may consist of a sequence of path segments separated by a
single slash "/" character. Within a path segment, the characters
"/", ";", "=", and "?" are reserved.
Within this definition, I don't see why a path segment with an escaped
'/' is considered as an invalid URI. For example, a uri that is
'/foo/bar%2F/' is considered invalid by apache, giving a 404 response
and not considering any handlers. I have also seen suggestions that the
correct form of that URI would be '/foo/bar%252F/', but to me that seems
to be double escaped, which is not what the RFC seems to imply.
I'm seeing this on 1.3.x (legacy application), but it is clearly a
design decision as it affects all versions I've tried. I'm sure there's
a good reason, but can someone explain it to me, and how I should work
around this, so that we can create and parse correctly escaped URIs.
Thanks
Tom
signature.asc
Description: This is a digitally signed message part
