Welcome! Log In Create A New Profile

Advanced

URL decode rewrite handling: + vs. %20

September 02, 2011 09:21PM
Ubuntu Natty
nginx/0.8.54
PHP 5.3.5 / FPM / FastCGI

I'm just beginning to work with nginx for the first time. Converting my home server (very few hits) as an experiment for possible broader-scale testing and implementation on work servers (billions of hits per month).

Everything has gone beautifully... up until I begin working on an older app: Gallery 2. Some of the photos in my Gallery contain spaces, so they're being encoded in the old-but-still-accepted + format. However, when I make the requests in nginx, it's passing the pathinfo through to fastcgi as an escaped + (%2b) instead of a space (+ or %20).

The path is something like this:

http://www.example.com/gallery/foo+bar.jpg.html
which gets rewritten to
http://www.example.com/gallery/main.php?g2_path=foo+bar.jpg.html

In a path, + should be handled literally per RFC. In a query string, it's supposed to be interpreted as a space per x-www-form-urlencoded. This is the disparity - what once was path is now query string. Because of the conversion, Apache translates the + from literal string to encoded space during rewrite. nginx simply encodes the literal string.

I don't know if there's a solid answer as to which one is strictly "correct"... but what I do need to know is if there's a way to achieve the same behavior in nginx?

This is an interesting edge case...
Subject Author Posted

URL decode rewrite handling: + vs. %20

signe September 02, 2011 09:21PM

Re: URL decode rewrite handling: + vs. %20

splitice September 03, 2011 06:24AM

Re: URL decode rewrite handling: + vs. %20

signe September 03, 2011 06:32AM

Re: URL decode rewrite handling: + vs. %20

locojohn September 05, 2011 06:58AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 230
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready