Возможно ли иметь обработчик apache mod_perl, который получает все входящие запросы и решает на основе набора правил, если этот запрос является тем, на что он хочет действовать, а если нет, return control для apache, который будет служить запросу как обычно?Apache mod_perl обработчик/диспетчер, возвращающий управление apache
Применение случай:
Наследства сайт, который использует DirectoryIndex для обслуживания index.html (или аналогичный) и по умолчанию обработчиков для PERL скриптов и т.д., в настоящее время дан посвежевший url-схема (django/catal-ish). Диспетчер будет иметь набор URL-адресов, сопоставленных с контроллерами , которые отправляются на основе на входящий адрес.
Однако хитрая часть оказывает это диспетчер в том же пространстве имен на тот же виртуальный хост в качестве старого сайта. Идея состоит в том, чтобы переписать сайт по частям, поскольку миграция «обновить все» не дает никаких шансов в тестировании производительности сайта с новой системой , и это невозможно из-за чистого размера .
Одна из многих проблем, в том, что диспетчер теперь получает все URL-адрес, как ожидалось, но DirectoryIndex и статический контент (который основном обслуживаемого другим хостом, но не все) не подаются должным образом. Диспетчер возвращает Apache :: Const :: DECLINED для несовпадающих URL-адресов, но Apache не продолжает обслуживать запрос, как обычно, но вместо этого дает страницу с ошибкой по умолчанию. Apache, похоже, не пытается искать /index.html и т. Д.
Как это можно решить? Вам нужно использовать внутренние переадресации? Измените стек обработчика в диспетчере? Используйте некоторые умные директивы? Все вышеперечисленное? Не возможно вообще?
Все предложения приветствуются!
Быстрое обновление этого для заинтересованных. Я добавил PerlTransHandler, чтобы указать на MyClass :: обработчик, в котором я проверяю все URL-адреса на $ r-> uri(). Если есть совпадение, выполните: $ r-> handler ('perl-script'); $ r-> set_handlers (PerlResponseHandler => sub {$ self-> dispatch();}); Возвращаемое значение зависит от желаемого поведения. Если нет совпадения, верните Apache2 :: Const :: DECLINED. – myme