Well, first you would change all your internal links to drop the ".php", e.g., <a href="/contact">Contact</a> instead of /contact.php (the file itself keeps its current name). Then you need to do something in
.htaccess to invisibly map /contact to /contact.php.
The simplest way is simply to stick a ".php" extension on the end of anything that isn't already a valid directory or file, and doesn't already end with ".php". The following may work for you:
RewriteEngine On
RewriteCond %{REQUEST_URI} !-d
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !\.php$
RewriteRule ^(.*)$ /$1.php [L]
In the future, if you rename your files to something else (such as .aspx), you would change ".php" to ".aspx" in the
.htaccess file.