Russian Apache Switch to English
Switch to Russian koi8-r
windows=1251
cp-866
iso8859-5
Russian Apache Как это работает Рекоммендации Где взять Как установить Как настроить Статус и поддержка
Краткий обзор FAQ Список рассылки Благодарности Поиск по серверу Powered by Russian Apache
Russian Apache mailing list archive (apache-rus@lists.lexa.ru)

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

[apache-talk] Re: [apache-talk] отсутсвующи й DirectoryIndex в директории, обрабатываемую ханд лер



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@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 ] [ Как это работает ] [ Рекомендации ] [ Где взять ] [ Как установить ] [ Как настроить ] [ Статус и поддержка ] [ Краткий обзор ] [ FAQ ] [ Список рассылки ] [ Благодарности ] [ Поиск по серверу ] [ Powered by Russian Apache ] [ Apache-talk archive ]

"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.