I would like to have Apache serve "normal" files out of /srv/http/public, and user files out of /srv/http/[user], so the directories might look like
/srv/http
/public
index.html - Accessible at localhost/index.html
/austin
index.html - Accessible at localhost/~austin/index.html
Right now, I have the following relevant configurations in the Apache .conf files
User http
Group http
DocumentRoot "/srv/http/public"
<Directory "/srv/http/public">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
UserDir /srv/http
UserDir disabled root
<Directory "/srv/http">
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
And the following permissions in /srv/http:
drwxr-xr-x root http /srv/http
drwxr-xr-x http http /srv/http/public
-rwxr-xr-x http http /srv/http/public/index.html
drwxr-xr-x austin http /srv/http/austin
-rwxr-xr-x austin http /srv/http/austin/index.html
Using this setup, localhost/index.html displays fine, but localhost/~austin/index.html
gives a 403 Access forbidden! error, no matter what I try.
Edit: the relevant error_log entry: [error] [client ::1] client denied by server configuration: /srv/http/austin/index.html
What am I doing wrong?
Oh, and I don't think it really matters, but I'm using Arch Linux, and Apache 2.2.19