ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 

  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА














     АРХИВ :: Apache-Talk
Apache-Talk mailing list archive (apache-talk@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[apache-talk] =?KOI8-R?Q?Re=3A_=5Bapache-talk=5D_=CF=D4=D3=D5=D4=D3=D7=D5=C0=DD=C9?==?KOI8-R?Q?=CA_DirectoryIndex_=D7_=C4=C9=D2=C5=CB=D4=CF=D2=C9=C9=2C?==?KOI8-R?Q?_=CF=C2=D2=C1=C2=C1=D4=D9=D7=C1=C5=CD=D5=C0_=C8=C1=CE=C4?==?KOI8-R?Q?=CC=C5=D2?=



On Fri, 5 Oct 2001, Lev Serebryakov wrote:

>   Есть директория в которой файлы обрабатываются хэндлером:
> <Location /xslt>
>         AddHandler my-handler .html .htm .txt
>         DirectoryIndex news.html
> </Location>
> 
>   В этом каталоге _вообще_ нет html-файлов (они генерятся хэндлером).
>   Так вот. Если news.html нету на диске, то просто выдается листинг
>   каталога! А если есть (хотя бы и нулевой) -- то результат запроса
>   (то есть, результат работы хэндлера -- все правильно) /news.html!
> 
>   Но это же не логично -- проверять наличие файла stat()'ом, а потом
>   делать полноценный субреквест. Можно ли от этой глупости избавится?
>   Это ведь mod_dir так глупо написан? Его переучить нельзя?

Нет, mod_dir написан не так. Опуская ненужные подробности, происходит
следущее. Для каждого directory index вызывается ap_sub_req_lookup_uri()
и если результат равен 200 и его finfo говорит, что это обычный файл,
то делается ap_internal_redirect() на этот directory index.
Если же ни чего не найдено, дело переходит к следущему
обработчику DIR_MAGIC_TYPE, как правило, это mod_autoindex.

Проблема решается двумя способами.

1. Делается обработчик DIR_MAGIC_TYPE и директива для его разрешения.

2. Делается обработчик фазы трансляции, реагирующий на специальное имя,
жёстко зашитое или же конфигурируемое. Примерно такой:

if (strcmp(r->uri, "index.xslt") == 0) {
    r->finfo.st_mode |= IS_IFREG;
    r->handler = "my-handler";
    return OK;
}

Ну и хандлер контента, должен уметь реагировать на такое имя.


Игорь Сысоев

=============================================================================
=               Apache-Talk@lists.lexa.ru mailing list                      =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
=       Archive avaliable at http://www.lexa.ru/apache-talk                 =



 




Copyright © Lexa Software, 1996-2009.