Doesnt it accept array of array refs for this purpose ? On Fri, Apr 16, 2021 at 1:10 PM John A. <j...@ankarstrom.se> wrote:
> Presently, Apache::ReadConfig doesn't seem to provide a way to represent > the order of directives, which limits its usefulness when used with > modules like mod_rewrite that rely on the order of certain directives: > > <VirtualHost "*:80"> > ServerName example.com > DirectoryRoot /www > <Directory "/www"> > RewriteEngine On > RewriteCond %{REQUEST_FILENAME} !-f > RewriteCond %{REQUEST_FILENAME} !-d > RewriteRule (.*) cgit.cgi/$1 [END,QSA] > </Directory> > </VirtualHost> > > This piece of configuration is (AFAIK?) impossible to create using > Apache::ReadConfig, because %VirtualHost and %Directory are unordered > hashes. > > Assuming I'm correct about the problem, what could be done to fix it? > > My personal idea is to create an additional module created > Apache::ReadConfig::Full (or something), which allows the following: > > $Config->push(['VirtualHost', '*:80'] => block( > ServerName => 'example.com', > DirectoryRoot => '/www', > ['Directory', '/www'] => block( > RewriteEngine => On, > RewriteCond => '%{REQUEST_FILENAME} !-f', > RewriteCond => '%{REQUEST_FILENAME} !-d', > RewriteRule => '(.*) cgit.cgi/$1 [END,QSA]' > ) > ); > > The `block' function creates an object that amounts to an ordered, > multi-value hash a la Hash::MultiValue. (The global $Config variable is > the same type of object.) > > Before I start looking into the possibility of creating such an > interface, I thought I'd ask here whether my assumptions about > Apache::ReadConfig's limitations are correct. > > Best regards > John > >