This is what I have been using in the past with non vB-sites:
Code:
## Internally rewrite extensionless file requests to .php files ##
#
# If the requested URI does not contain a period in the final path-part
RewriteCond %{REQUEST_URI} !(\.[^./]+)$
# and if it does not exist as a directory
RewriteCond %{REQUEST_fileNAME} !-d
# and if it does not exist as a file
RewriteCond %{REQUEST_fileNAME} !-f
# then add .php to get the actual filename
RewriteRule (.*) /$1.php [L]
## Externally redirect clients directly requesting .php page URIs to extensionless URIs
#
# If client request header contains php file extension
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.php\ HTTP
# externally redirect to extensionless URI
RewriteRule ^([^.]+).php$ http://your-domain.com/$1 [R=301,L]
## Force custom error page, since php does not return proper errors after this procedure ("no input file specified")
#
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteRule ^.+\.php$ /path/to/errorpage.php
Anyway - all of this will not remove the file extensions in vB, i.e. the links in the software will still be .php.
Having this used before: it works, but I would advise against using it. I wouldn't go through the potential trouble just for cosmetic reasons.