> Khimenko Victor wrote:
>
> > > Возник у меня вопрос: а из .shtml файлов META HTTP в принципе не
> > > выкусывается, или я что-то не понял?
> > >
> > В принципе не выкусываются. Мог бы объяснить, почему, да лень -- если человеку
> > приходит в голову идея, что они могут оттуда выкусываться, то придется долго
> > объяснять ;))) Это связано с внутренним устройством Apache -- конечно можно
>
> Объясни пожалуйста, мне тоже интересно. Можно только суть, без лишних
> подробностей.
>
Ok. Объясняю на пальцах: для каждого типа файла в Apache может быть обработчик
-- для .html, .txt, .gif и т.д. -- это просто обработчик, который посылает
содержимое файлов после сформированного заголовка, для .asis файлов --
обработчик, который просто посылает файл напрямую, для .cgi файлов --
обработчик, который исполняет файл как .cgi-скрипт и т.д. Способ выбора
обработчика для файла зависит от разных вещей -- от списка MIME-типов,
от расширений файлов, может регулироваться через <Directory> и <Location>,
но в конечном итоге происходит выбор *одного* обработчика, который и
обрабатывает содержимое файлов -- связываение обработчиков в цепочку не
предусмотрено. Когда вы пишете
AddHandler strip-meta-http .html
то вы устанавливаете для файлов с расширением .html специальный обработчик,
который выкусывает META HTTP, но для .shtml файлов нужен обработчик, который
будет интерпретировать SSI (или XSSI ;) ! Конечно, можно сделать другой
обработчик, который бы не только выкусывал META HTTP, но и интерпретировал
XSSI, но это не столь тривиально и потому не сделано. Если кому это
действительно *сильно* нужно -- пожалуйста: исходники перед вами, как и
текстовый редактор ;) Мне этим заниматься влом (как и многим другим ;)...
А изменить Apache так, чтобы он допускал цепочки обработчиков -- только за
ОЧЕНЬ дополнительную плату: это *очень* много чего править придется...
Конечно pipes здесь могут помочь, но придется делать fork, который в некоторых
случаях ыесьма дорог и возникнет много других проблем ;(( Есть еще другой
подход -- пытаться отловить META HTTP в том же месте, где производится
перекодировка (в функциях вывода), но это замедлит работу сервера и вообще
чревато большими глюками... Да и не так это все страшно -- я, честно говоря,
вообще не понимаю -- нафига этот обработчик нужен? Неужели простой скрипт из
нескольких строк типа:
-- cut --
#!/bin/bash
sed s/\<.*META.*HTTP-EQUIV.*\>/ < $1 > /tmp/$$.tmp
rm -f $1
mv /tmp/$$.tmp $1
-- cut --
чем-то не устраивает? Зачем заставлять http сервер по сто раз на дню выполнять
работу, которую можно выполнить один раз?
> > все на свете переделать, но все равно .shtml файлы обычно FrontPage'ом не
> > генерятся, так что можно и руками стареть...
>
> Это не аргумент, с точки зрения человека, не погруженного в тайны
> внутреннего мира апача эта разборчивость выглядит нелогичной.
>
Если бы вы хотя бы удосужились посмотреть в TFM что делает директива
AddHandler
то вам бы наверняка стало все понятно ;) Там описано примерно то, что я написал
выше... Правда там не сказано, что объединять Handler'ы в цепочку нельзя, но
об этом можно догадаться...
P.S. Точно так же многим кажется странным, что .cgi не может выдавать XSSI -- и
объясняется оно ровно так же ...
"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.