welcome to feedback on these, especially the names On Thu, Oct 21, 2021 at 2:54 PM <cove...@apache.org> wrote: > > Author: covener > Date: Thu Oct 21 18:54:46 2021 > New Revision: 1894456 > > URL: http://svn.apache.org/viewvc?rev=1894456&view=rev > Log: > add DirectorySlashNotFound to silence scanners > > Almost as awkwardly named as IndexForbiddenReturn404 > > > Added: > httpd/httpd/trunk/changes-entries/DirectorySlashNotFound.txt > Modified: > httpd/httpd/trunk/docs/manual/mod/mod_dir.xml > httpd/httpd/trunk/modules/mappers/mod_dir.c > > Added: httpd/httpd/trunk/changes-entries/DirectorySlashNotFound.txt > URL: > http://svn.apache.org/viewvc/httpd/httpd/trunk/changes-entries/DirectorySlashNotFound.txt?rev=1894456&view=auto > ============================================================================== > --- httpd/httpd/trunk/changes-entries/DirectorySlashNotFound.txt (added) > +++ httpd/httpd/trunk/changes-entries/DirectorySlashNotFound.txt Thu Oct 21 > 18:54:46 2021 > @@ -0,0 +1,2 @@ > + *) mod_dir: Add "DirectorySlashNotFound" to return 404 instead of a > + DirectorySlash redirect. [Eric Covener] > > Modified: httpd/httpd/trunk/docs/manual/mod/mod_dir.xml > URL: > http://svn.apache.org/viewvc/httpd/httpd/trunk/docs/manual/mod/mod_dir.xml?rev=1894456&r1=1894455&r2=1894456&view=diff > ============================================================================== > --- httpd/httpd/trunk/docs/manual/mod/mod_dir.xml (original) > +++ httpd/httpd/trunk/docs/manual/mod/mod_dir.xml Thu Oct 21 18:54:46 2021 > @@ -230,6 +230,22 @@ a directory</description> > </usage> > </directivesynopsis> > <directivesynopsis> > +<name>DirectorySlashNotFound</name> > +<description>Toggle sending a HTTP 404 error in place of a trailing > slash</description> > +<syntax>DirectorySlashNotFound On|Off</syntax> > +<default>DirectorySlashNotFound Off</default> > +<contextlist><context>server config</context><context>virtual host</context> > +<context>directory</context><context>.htaccess</context></contextlist> > +<override>Indexes</override> > +<compatibility>Added in 2.5.1</compatibility> > + > +<usage> > + <p>The <directive>DirectorySlashNotFound</directive> directive > determines whether > + <module>mod_dir</module> should return an HTTP 404 status code where it > would > + otherwise have redirected the request to include a trailing slash. </p> > +</usage> > +</directivesynopsis> > +<directivesynopsis> > <name>FallbackResource</name> > <description>Define a default URL for requests that don't map to a > file</description> > <syntax>FallbackResource disabled | <var>local-url</var></syntax> > > Modified: httpd/httpd/trunk/modules/mappers/mod_dir.c > URL: > http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/mappers/mod_dir.c?rev=1894456&r1=1894455&r2=1894456&view=diff > ============================================================================== > --- httpd/httpd/trunk/modules/mappers/mod_dir.c (original) > +++ httpd/httpd/trunk/modules/mappers/mod_dir.c Thu Oct 21 18:54:46 2021 > @@ -48,6 +48,7 @@ typedef struct dir_config_struct { > moddir_cfg checkhandler; > int redirect_index; > const char *dflt; > + moddir_cfg do_slash_notfound; > } dir_config_rec; > > #define DIR_CMD_PERMS OR_INDEXES > @@ -88,6 +89,13 @@ static const char *configure_slash(cmd_p > d->do_slash = arg ? MODDIR_ON : MODDIR_OFF; > return NULL; > } > +static const char *configure_slash_notfound(cmd_parms *cmd, void *d_, int > arg) > +{ > + dir_config_rec *d = d_; > + > + d->do_slash_notfound = arg ? MODDIR_ON : MODDIR_OFF; > + return NULL; > +} > static const char *configure_checkhandler(cmd_parms *cmd, void *d_, int arg) > { > dir_config_rec *d = d_; > @@ -132,6 +140,8 @@ static const command_rec dir_cmds[] = > "a list of file names"), > AP_INIT_FLAG("DirectorySlash", configure_slash, NULL, DIR_CMD_PERMS, > "On or Off"), > + AP_INIT_FLAG("DirectorySlashNotFound", configure_slash_notfound, NULL, > DIR_CMD_PERMS, > + "On or Off"), > AP_INIT_FLAG("DirectoryCheckHandler", configure_checkhandler, NULL, > DIR_CMD_PERMS, > "On or Off"), > AP_INIT_TAKE1("DirectoryIndexRedirect", configure_redirect, > @@ -146,6 +156,7 @@ static void *create_dir_config(apr_pool_ > > new->index_names = NULL; > new->do_slash = MODDIR_UNSET; > + new->do_slash_notfound = MODDIR_UNSET; > new->checkhandler = MODDIR_UNSET; > new->redirect_index = REDIRECT_UNSET; > return (void *) new; > @@ -160,6 +171,8 @@ static void *merge_dir_configs(apr_pool_ > new->index_names = add->index_names ? add->index_names : > base->index_names; > new->do_slash = > (add->do_slash == MODDIR_UNSET) ? base->do_slash : add->do_slash; > + new->do_slash_notfound = > + (add->do_slash_notfound == MODDIR_UNSET) ? base->do_slash_notfound : > add->do_slash_notfound; > new->checkhandler = > (add->checkhandler == MODDIR_UNSET) ? base->checkhandler : > add->checkhandler; > new->redirect_index= > @@ -251,6 +264,10 @@ static int fixup_dir(request_rec *r) > return DECLINED; > } > > + if (d->do_slash_notfound == MODDIR_ON) { > + return HTTP_NOT_FOUND; > + } > + > /* Only redirect non-get requests if we have no note to warn > * that this browser cannot handle redirs on non-GET requests > * (such as Microsoft's WebFolders). > >
-- Eric Covener cove...@gmail.com