Problem with rewrite regexes when the URL contains a trailing slash (nginx-1.5.0)

Maxim Dounin mdounin at mdounin.ru
Wed May 22 19:12:40 UTC 2013


Hello!

On Wed, May 22, 2013 at 08:40:43PM +0200, Roberto F. wrote:

> Hello.
> I'm having a problem with nginx's rewrite directive.
> Basically, when the URL contains a trailing point, it is ignored by
> the rewrite regexp.
> Let's do an example:
> I load http://uri/something. (with the trailing point). Then, with
> the rewrite rule:
> rewrite ^/something\.$ /index.html
> I should see 'index.html', but instead that appears in the logfile
> (with rewrite_log set at on):
> 2013/05/22 20:36:07 [notice] 6256#1440: *57 "^/something\.$" does
> not match "/something", client: 127.0.0.1, server: localhost,
> request: "GET /something. HTTP/1.1", host: "localhost"
> As you can see, the trailing point is missing from the "does not
> match" part of the log.
> 
> Is there any workaround for that?

Are you using nginx/Windows?  On Windows trailing dots and spaces 
in URIs are ignored as they aren't significant from filesystem 
point of view and otherwise can be used to bypass access 
restrictions.

-- 
Maxim Dounin
http://nginx.org/en/donation.html



More information about the nginx mailing list