I've had the same issues when developing with Flask in Python. I forgot to URL encode some query parameters and it worked fine with the local HTTP server.
But when I put nginx in front as a proxy, it denied all requests.
But then the server may still decide that an empty segment is so meaningless that it will refuse it.
In fact, it would not be a smart move to just treat double slashes the same as single ones, because of relative URLs: a ".." segment only removes one slash, so the hierarchy levels would get messed up. thttpd is doing the smart thing here.
As one of my teachers at university would say: the empty segment is also a segment.
The server can of course interpret the path as it wants, but it should allow an application running under the server to give 'foo//bar' a meaning if that application wants to, IMO.
True. I was writing about the case when the URL simply mapped to a file system location. Applications should be able to apply their own interpretation.
This is treated as an invalid request: