mod_perl não funcionam quando colocadas em .htaccess e não há Localização

1

Estou tentando concluir a solicitação de recursos do Redmine # 2693: Use o Redmine.pm para autenticar em qualquer diretório (1 ). Eu não tenho muito conhecimento sobre todas essas coisas e preciso de ajuda. O Redmine usa o módulo mod_perl Redmine.pm para autenticação & autorização. Este módulo define várias diretivas de configuração personalizadas. Eu modifiquei com sucesso o patch de (1) e funciona quando todas as configurações estão em <Location> :

<Location /digischrank/test>
        AuthType basic
        AuthName "Digischrank Test" 
        Require valid-user
        PerlAccessHandler Apache::Authn::Redmine::access_handler
        PerlAuthenHandler Apache::Authn::Redmine::authen_handler
        RedmineDSN "DBI:mysql:database=SomedaTaBAse;host=localhost" 
        RedmineDbUser "SoMeuSer" 
        RedmineDbPass "SomePaSS" 
        RedmineProject "digischrank" 
</Location>

Mas quando eu movo uma dessas diretivas ( RedmineProject , consulte (1)) no arquivo .htaccess , o Redmine.pm não a vê! Eu tentei alterar <Location> para <Directory> e adicionar AllowOverride All . As diretivas de .htaccess são visíveis, mas as restantes de <Directory> - não. Eu não quero mover todas as diretivas para cada .htaccess . Quando adiciono <Location> além de <Directory> , novamente - apenas as diretivas de <Location> são visíveis.

Tanto quanto sei, as diretivas devem ser mescladas. Eu sinto falta de algo?

    
por ayaye 08.12.2012 / 15:40

1 resposta

0

Descobri que o Redmine.pm não fornece a função DIR_MERGE para mesclar objetos de configuração. Veja detalhes na seção Criando e mesclando objetos de configuração de mod_perl manual. Eu simplifiquei o exemplo dado porque eu preciso apenas do modo de substituição:

sub DIR_MERGE    { merge(@_) }

sub merge {
      my ($base, $add) = @_;
      my %mrg = ();
      for my $key (keys %$base, keys %$add) {
          next if exists $mrg{$key};
          # override mode
          $mrg{$key} = $base->{$key} if exists $base->{$key};
          $mrg{$key} = $add->{$key}  if exists $add->{$key};
      }
      return bless \%mrg, ref($base);
}
    
por 10.12.2012 / 11:24