This is a pretty common problem with an easy fix. First of all check that your directory permissions are correct. In order to get this to work you will have to have 0755 permissions on the users home directory and the r and x bits must be set for the world (0755 is fine) on the users public_html directory. The files being served should be at least 0644. Notably the same permissions work on virtual hosted pages and the root page for the domain. One other problem which arises from time to time which affects the public_html functionality involves the httpd.conf file itself. There is a minor bug which may occur if the paths in the directive for these directories are incorrect. This problem arose with SWS 3.0. Here's what the problem passage looks like:
<Directory /*/public_html>
|
Functionally what is occurring is that the path needs to be relative to the system root directory (/), to work correctly, because of how Apache handles wildcards. In order to fix this problem, change the line to look like this:
<Directory /home/*/public_html>
|