Rewrite assistance needed

Marcus Clyne eugaia at
Tue May 5 10:53:57 MSD 2009

Hi John,

Is the problem that Nginx is URL-encoding the whole string, including 
&'s, so that you'd have to name your directories with %20 or %26 (for &) 
in the directory names?  I believe both (space) and %20 will go to %20 , 
the same for &, though I may be wrong.

I think you'd need to name your directory Client%20Files for it to work, 
and if you have an ampersand, you'd need to use %26.

I've had this problem before when proxying from Nginx to PBMS - it 
wouldn't work because the & was URL-encoded and PBMS can (or could at 
that time) only use non-url-encoded &'s.

On Apache and Litespeed (which uses Apache's rewrite rules) there's a 
re-write option to add to prevent URL-encoding ([NE]), but I don't 
believe there is for Nginx (or at least I didn't know about one when I 
was looking at it).

That option may have been added since,  or if not, it might be something 
useful to add. Something like:

rewrite ... nourlencode;



Igor Sysoev wrote:
> On Tue, May 05, 2009 at 07:53:22AM +0200, John Stykes wrote:
>> Hi Igor, thanks for the response.
>> I have that setting already. The problem is that when the request comes 
>> with a space (%20) or an ampersand (&) it causes problems and nginx 
>> cannot find that directory. So when a request comes for file1.doc in the 
>> directory 'Client Files' it cannot find that directory even if i named 
>> it Client\ Files on the filesystem.
>> This is why i thought perhaps i could rewrite the url or the directory 
>> portion so that if a request comes for Client%20Files i simply use a 
>> different directory called clientfiles with no spaces.
> Could you show the error_log message about these files ?
> nginx uses decoded names.
>> thanks
>> John
>> I have tried using a directory such as
>> Igor Sysoev wrote:
>>> On Tue, May 05, 2009 at 05:59:14AM +0200, John Stykes wrote:
>>>> the problem however occurs when 2 specific requests come to the server
>>>> but the 2 specific urls above are problematic because of the spaces (in
>>>> both) and the ampersand (in one).
>>>> i've tried endless rewrite rules to make the 2 examples above point to a
>>>> different directory on the filesystem but nginx cannot find the file and
>>>> i get 404 errors. Filesystem is linux.
>>>> I have tried using a directory with spaces escaped with \ - no luck
>>> If these files are served by nginx without backend participation,
>>> the you need just
>>>     location /clientfiles {
>>>         root  /var/www/data;
>>>     }
>> -- 
>> Posted via

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the nginx mailing list