Bug 45259

Summary: Add /home/[a-z]/* scheme to UserDir conf
Product: Apache httpd-2 Reporter: sandoz <sandoz>
Component: mod_userdirAssignee: Apache HTTPD Bugs Mailing List <bugs>
Status: NEW ---    
Severity: enhancement    
Priority: P2    
Version: 2.2.9   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Attachments: Patch for mod_userdir.c to add a new UserDir conf scheme.

Description sandoz 2008-06-23 08:16:59 UTC
Currently the UserDir directive support various schemes like:

 * UserDir public_html      -> ~bar/public_html/one/two.html
 * UserDir /usr/web         -> /usr/web/bar/one/two.html
 * UserDir /home/*/www     -> /home/bar/www/one/two.html

Each of them having different advantages. The last two have the major advantage, that no local user has to be present on the web server machine to rewrite the requests. Unfortunately, those schemes do not offer a flexible rewrite policy.

In scenarios with a lot of different users, home directories are often separated in different parent directories named by the first letter of the username, e.g. /home/b/bar.

It would be really helpful to have a configuration rule to define such UserDir rewrite. For example:

 * UserDir /home/_/*/      -> /home/b/bar/one/two.html


Thanks for you work!
sandoz
Comment 1 sandoz 2008-06-26 09:02:00 UTC
Since '_' is a valid POSIX filename character, it is NOT a good idea to use it in such a scheme. One would rather use a scheme like the following:

 * UserDir /home/?/*/      -> /home/b/bar/one/two.html

JFTR,
sandoz
Comment 2 sandoz 2008-06-27 06:42:19 UTC
Created attachment 22188 [details]
Patch for mod_userdir.c to add a new UserDir conf scheme.

This patch adds a new configuration scheme to the UserDir directive.

 * UserDir /home/?/*/public_html -> /home/a/anabel/public_html

This scheme makes it possible to subdivide the /home directory into directories named by the first letter of the usernames, e.g. /home/a/anabel, /home/b/bob, etc.

For computational simplicity, that scheme allows only such configurations, where the '?' sign comes before the '*' sign.