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