You could enable per-user web directories with mod_userdir which maps
to the corresponding file
in the user directory per default.
To get rid of the tilde, you could use Apache's rewrite engine and forbid access to all URLs starting with
~ and use
Aliases to map the individual paths to their user directories.
Add this to your VirtualHost config:
# forbid URLs starting with /~
RewriteRule ^/~ - [F]
# map individual paths to user dirs
Alias /bart /home/bart/public_html
Alias /homer /home/homer/public_html
Alias /lisa /home/lisa/public_html
Alias /maggie /home/maggie/public_html
If you don't need to serve any files from your
DocumentRoot, you could use one
AliasMatch instead of 150
# map all paths to user dirs
AliasMatch ^/([^/]+)(/.*)?$ /home/$1/public_html$2
You need to enable
mod_rewrite in your server, on Debian you would do this with
a2enmod and a restart.
sudo a2enmod userdir rewrite
sudo service apache2 restart