这个脚本据说应该把* .domain.com中的*分配给$ subdomainvariables,并且$ subdomain应该放到AssignUserId中。
但是,不pipe我多么努力,我都无法得到这个工作。 我一直在努力工作好几天,真的很绝望。 如果你认为这是很多工作,请收取我的咨询,并得到根本的passwd。
任何想法,但? 谢谢…
<Perl> Use Apache2::ServerRec qw//; use Apache2::ServerUtil qw//; use Apache2::RequestRec qw//; use Apache2::RequestUtil qw//; use Apache2::Const qw/OK DECLINED/; my $s = Apache2::ServerUtil->server; $s->push_handlers(PerlHeaderParserHandler => sub { my($r) = @_; if ( $r->hostname =~ m/(.*)\.([^.]+\.\w+)$/ ) { my($subdomain,$domain) = ($1,$2); # # THIS WORKS! # ----------- # if requested domain is fio.domain.com, # this successfully assigns ServerAdmin [email protected] # so gathering domain parts working $r->server->server_admin("$subdomain\@$domain"); # # THIS DOESN'T! # -------------- # this is supposed to insert this line inside Virtual host # -------------- # <IfModule mpm_itk_module> AssignUserId fio domain</IfModule> # -------------- $r->add_config([ "<IfModule mpm_itk_module>", "AssignUserId $subdomain $domain", "</IfModule>", ]); if ( $@ ) { warn $@ } return OK; } else { return DECLINED; } }); </Perl>
我最初的猜测是你已经通过钩子PerlHeaderParserHandler (你已经交给了$r )或者请求对象来build立一个处理器。
从AssignUserId的文档(您要dynamicconfiguration的参数),configuration的上下文必须是 虚拟主机 。 猜测我会怀疑这意味着你应该configuration在每个服务器的基础上,而不是在每个请求的基础上。
请参阅$s->add_config文档,而不是$r->add_config 。
根据指令的处理,在请求钩子被调用的时候,可能已经发生了AssignUserId的处理,在这种情况下,除了静态configuration每个子域作为虚拟服务器之外,没有太多的事情可做。
更新1 :当然,如果你尝试使用$s->add_config来处理每一个请求,那么在内存中使用相同的指令重复一遍又一遍的操作会有一个笨拙的服务器configuration的危险。 更新服务器configuration的每个请求都不切实际。
也许仍然可以用$r->add_config()来做到这一点,从文档中注意到“configuration指令的处理就像在一个<Location>块中给出的一样”。 您是否尝试过将一个非AssignUserId参数放在<Location>块中的Perltesting?