The problem appears to be in ap_directory_walk(): do { int res; char *seg_name; char *delim; int temp_slash=0; /* We have no trailing slash, but we sure would appreciate one... */ if (sec_idx && r->filename[filename_len-1] != '/') { r->filename[filename_len++] = '/'; r->filename[filename_len] = 0; temp_slash=1; }
/* Begin *this* level by looking for matching <Directory> sections * from the server config. */ for (; sec_idx < num_sec; ++sec_idx) { ap_conf_vector_t *entry_config = sec_ent[sec_idx]; core_dir_config *entry_core; entry_core = ap_get_module_config(entry_config, &core_module); /* No more possible matches for this many segments? * We are done when we find relative/regex/longer components. */ if (entry_core->r || entry_core->d_components > seg) { break; } We end up breaking out of the for loop in that last conditional above, and sec_idx never gets incremented. Because sec_idx is still zero, the trailing slash doesn't get appended on the next loop iteration. When we finally get to the directory config for /manual, the paths don't match because r->filename lacks a trailing slash. I think we need different logic for deciding when to add the trailing slash. --Brian Jeff Trawick wrote: >Run this config as-is and DEFLATE is never added. Uncomment the empty >"Directory /" container and it works. Something is hosed in dir >config merge or something like that. > >--------cut here--------- >TypesConfig conf/mime.types >ServerRoot "/home/trawick/apacheinst" >Timeout 300 >Listen 8080 >DocumentRoot "/home/trawick/apacheinst/htdocs" >Alias /manual "/home/trawick/apacheinst/manual" > >#<Directory /> >#</Directory> > ><Directory "/home/trawick/apacheinst/manual/"> >SetOutputFilter DEFLATE ></Directory> > >ErrorLog logs/error_log >LogLevel debug >LogFormat "%h %l %u %t \"%r\" %>s %b" common >CustomLog logs/access_log common >---------cut here--------- >