In your .htaccess, mod_rewrite is taking precendence over the Errordocument.
Code:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php
ErrorDocument 404 /404.htm If you take the time to actually understand these directives, it should be obvious that the Errordocument will NEVER come into affect. Your mod_rewrite prevents this. In plan english the statements are:
if the requested filename is not a valid file and the requested filename is not a valid directory then the filename IS index.php Thus any filename which does not exist will be changed to index.php. The same holds true if the filename is not a valid directory. It will be changed to index.php. Accordingly, the Errordocument is never trigger, because the conditions of the mod_rewrite statemenst have already been meet.