Привет всем.
Сталкнулся с такой проблемой: есть 2 сервера на 80 порту и на 81 (production
and development). Это разные бинарники. Запускаются практически с одного
конфига (listen разные).
Вот вот, когда работаю с сервером на 81 порту и делаю запрос к директории
http://server:81/dir без указания последнего слэша, то немедленно оказываюсь
на другом сервере, который на 80 порту....
Обработку последнего слэша берет на себя mod_dir.c. Я там покопался, но
что-то моих познаний API апача явно недостаточно. Нет ли там какого-нибудь
бага?
Вот этот кусочек:
if (r->uri[0] == '\0' || r->uri[strlen(r->uri) - 1] != '/') {
char *ifile;
if (r->args != NULL)
ifile = ap_pstrcat(r->pool, ap_escape_uri(r->pool, r->uri),
"/", "?", r->args, NULL);
else
ifile = ap_pstrcat(r->pool, ap_escape_uri(r->pool, r->uri),
"/", NULL);
ap_table_setn(r->headers_out, "Location",
ap_construct_url(r->pool, ifile, r));
return HTTP_MOVED_PERMANENTLY;
}
Что такое r->pool и где там server_name и server_port ?
Где еще копать?
Сергей.
ЗЫ. Server: Apache/1.3.22 (Unix) mod_perl/1.26
=============================================================================
= Apache-Talk@xxxxxxxxxxxxx mailing list =
Mail "unsubscribe apache-talk" to majordomo@xxxxxxxxxxxxx if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =
"Russian Apache" includes software developed
by the Apache Group for use in the Apache HTTP server project
(http://www.apache.org/) See
Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C)
1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.