Про несовместимость, или apache vs NOD32/IMON
Некоторое время назад я писал об одном из способов избавления от имени web-приложения и пути к сервлету в адресе при установке OpenCMS. Единственное что мне в описаном методе не давало покоя, так это вот это
Единственное, что могу еще добавить, так это то, что для
RewriteRule .* /${WEBAPP_NAME}/OpenCms/handle404?exporturi=%{REQUEST_URI}&%{QUERY_STRING} [P]
вместо опции [P] (force proxy) необходимо выставить [R] (force redirect).
Вызвано это было тем, что на моей тестовой машине ну никак не удавалось заставить работать это правило в режиме прокси, а [R] приводило к тому, что клиенту отправлялся ответ, требующий редиректа на сформированый URL. А так как это правило обрабатывает запросы на еще не экспортированые статические ресурсы дизайна (типа CSS и фоновые изображения), то, вероятно ввиду специфики реализации их загрузки, большинство браузеров ну никак не хотели следовать редиректу, и просто отказывались их грузить. При втором запросе они конечно уже были экспортированы и дизайн спокойненько загружался.
С первой попытки найти решение проблемы не получилось. В обсуждении первоисточника советуют включить модуль mod_proxy, раскоментировав в конфиге apache следующие строки
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
Ну и конечно необходимо вернуть [P] в злосчастное правило. После выполнения всех необходимых действий и перезугрузки apache в ответ на запросы стало вываливаться сообщение об ошибке
Bad Request
Your browser sent a request that this server could not understand.
Request header field is missing ‘:’ separator.GET /opencms/handle404?exporturi=/export/resources/style.css HTTP/1.1
И как вот с этим бороться - непонятно. Беглый просмотр исходников сервера ни к чему не привел. И вот на днях я таки зашел на баг-трэкинг apache, и спустя некоторое время, потраченое на поиск нужного бага, удалось выяснить, что во всем виноват NOD32/IMON, запущеный на моей машине, и зачем-то меняющий заголовки, посылаемые apache-м самому себе. Отключаю IMON сервис в NOD32, перепускаю apache, и вуаля!
P.S.
Как бы там ни было, истина одна: “Кто ищет тот всегда найдет” и “Не сдаваться никогда”
Изменен
