ngx_http_rewrite_module и файлы с пробелами

Sergey Egorov esvesv at gmail.com
Thu Dec 4 12:56:23 MSK 2008


Hi!

Имеем вот такой запрос:

http://somesite.com/catalogue/images/PGF800%202.jpg

Задача: переписать URI, если файл есть на  
диске в другом каталоге (к примеру  /site/ 
clients/c81e728d9d4c2f636f067f89cc14862c)

Конфиг:

root /home/user/domains/site.com/public_html;
#если есть файл в обычном месте -  
выходим сразу
if (-f $request_filename) {
	break;
}
if ($request_filename ~  ^/home/user/domains/site.com/public_html(.*) 
$) {
	set $test /site/clients/c81e728d9d4c2f636f067f89cc14862c$1;
}
#тут поставил !-f чтобы была возможность  
видеть лог, по идее тут -f
if (!-f $document_root$test) {
	rewrite ^(.*)$ $test break;
}

Лог:

2008/12/04 00:08:04 [notice] 14088#0: *47 "^/home/user/domains/ 
site.com/public_html(.*)$" matches "/home/user/domains/site.com/ 
public_html/catalogue/images/PGF800 2.jpg", client: 88.85.170.161,  
server: www.site.com, request: "GET /catalogue/images/PGF800%202.jpg  
HTTP/1.1", host: "site.com"
2008/12/04 00:08:04 [notice] 14088#0: *47 "^(.*)$" matches "/catalogue/ 
images/PGF800 2.jpg", client: 88.85.170.161, server: www.site.com,  
request: "GET /catalogue/images/PGF800%202.jpg HTTP/1.1", host:  
"site.com"
2008/12/04 00:08:04 [notice] 14088#0: *47 rewritten data: "/site/ 
clients/c81e728d9d4c2f636f067f89cc14862c/catalogue/images/ 
PGF800%202.jpg", args: "", client: 88.85.170.161, server:  
www.site.com, request: "GET /catalogue/images/PGF800%202.jpg HTTP/ 
1.1", host: "site.com"
2008/12/04 00:08:04 [error] 14088#0: *47 open() "/home/user/domains/ 
site.com/public_html/site/clients/c81e728d9d4c2f636f067f89cc14862c/ 
catalogue/images/PGF800%202.jpg" failed (2: No such file or  
directory), client: 88.85.170.161, server: www.site.com, request:  
"GET /catalogue/images/PGF800%202.jpg HTTP/1.1", host: "site.com"

Пробовал все последние версии nginx 0.5.37,  
0.6.33, 0.7.24 - результат тот же.

Что делать? :(

Best regards
Sergey Egorov




More information about the nginx-ru mailing list