W dniu 10.11.2020 o 01:19, Francis Daly pisze: > On Tue, Nov 10, 2020 at 12:11:28AM +0100, Grzegorz Kulewski wrote: >> W dniu 09.11.2020 o 21:10, Sergey A. Osokin pisze: >>> On Mon, Nov 09, 2020 at 03:47:13PM +0100, Grzegorz Kulewski wrote: >>>> Is there any (sane) way to match things like: %e2%80%8b in URL in location? > >>> here is the code snippet (not tested): >>> >>> location ~ ^/\xE2\x80\x8E { >>> return 200 "%e2%80%8b matched\n"/; >>> } >> >> Thank you. It works. >> >> They key seems to be using regexp match. Regular match doesn't seem to >> understand escapes. Not sure if (where) it is documented. > > Regex match is straightforward here -- you use whatever your regex-engine > supports to match the octets, which probably includes a straight swap > of \x for % from the url. > > Non-regex match does work too, though; the key there is that nginx does > that match against the non-url-encoded characters.
This is documented. > In my case, it displays as <200b> and represents a single character. > > So my config file can include (e.g.) > > location ^~/<200b> { return 200 "match /zwsp ($uri, $request_uri)\n"; } > > (except there is only one "character" between the / and the space); > and then any request that starts with /%e2%80%8b should be handled in > that location; and any request that does not, should not be. Including raw UTF-8 special characters in nginx config isn't my ideal sane solution. :) I think I would prefer to be able to use escapes in non-regexp matches too... -- Grzegorz Kulewski _______________________________________________ nginx mailing list nginx@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx