I do not see any reason that this code should work differently when the user enters a directory path in the requested URL.
This could be a problem related to the way that various scopes are combined and resolved: See [
httpd.apache.org...]
There's a bit of redundancy in this code. You might want to try:
<Directory /home/www/user1>
SSLRequireSSL
ErrorDocument 403 /apacheerror/usererror.html
Order Deny,Allow
Deny from all
</Directory>
#
<FilesMatch ".*">
ErrorDocument 403 /apacheerror/fileserror.html
Deny from all
</FilesMatch>
#
<FilesMatch "\.(html|php)$">
Allow from all
</FilesMatch>
Assuming that you simply mis-typed "ErrorDocument," there was only one real error "*.*" is not a valid regular expression. It might work in DOS, but not regex.
In regular expressions, "." means "Match any single character." The "*" is a quantifier meaning "Match any number (including zero) of the preceding character, bracketed character-alternative group, or parenthesized sub-expression. So ".*" means "Match anything and everything."
Be aware that with this set-up (or your previous one), your custom error pages *must* be either .html or .php files. Otherwise, you'll deny access to the error page, and any 403 error will become recursive (it will create an 'infinite' error loop.)
Jim