是否有可能拥有一个apache mod_perl处理程序,它接收所有传入的请求并根据一组规则来决定这个请求是否需要执行,如果不是,返回控制到Apache会正常服务请求?Apache mod_perl处理程序/调度程序将控制权返回给apache
用例:
它采用 的DirectoryIndex为在职的index.html (或类似)和默认的处理程序 Perl脚本等遗留现场,被赋予一种 劲达url-scheme (django/catalyst-ish)。调度员 将有一组映射到 控制器的URL,这些控制器在传入url上根据 分派。
但是,棘手的部分是 这个调度程序在与旧的 站点相同的虚拟主机上的相同的 名称空间内。我们的想法是逐个改写 网站,因为“全部更新” 迁移不会使用新系统 测试 网站性能,也不可能由于网站的纯粹 大小。
其中的诸多问题,是调度员现在可以接收所有的URL如预期,但DirectoryIndex的和静态内容(这是大多由不同的主机服务,但不是一切)没有正常提供服务。调度程序为非匹配的url返回一个Apache :: Const :: DECLINED,但Apache不会像往常一样继续提供请求,而是提供默认的错误页面。 Apache似乎没有试图寻找/index.html等
这怎么解决?你需要使用内部重定向吗?更改调度程序中的处理程序堆栈?使用一些聪明的指令?上述所有的?根本不可能?
欢迎您提出任何建议!
对此感兴趣的人可以快速更新。我添加了一个PerlTransHandler来指向MyClass :: handler,我在其中检查所有的URL对$ r-> uri()。如果匹配,执行:$ r-> handler('perl-script'); $ r-> set_handlers(PerlResponseHandler => sub {$ self-> dispatch();});返回值取决于期望的行为。如果没有匹配,则返回Apache2 :: Const :: DECLINED。 – myme 2010-02-11 14:05:58