Wie du bereits weisst, kannst du mit einer htaccess-Datei URLs die auf .php enden nach .html umschreiben. Problematisch bei deiner RewriteRule-Anweisung ist, dass auch physisch vorhandene html-Dateien ebenfalls umgeleitet werden. Um dieses Problem zu umgehen, kannst du eine RewriteCondition setzen:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+?)\.html$ /$1.php [L]
Damit wird verhindert, dass die nachfolgende RewriteRule nicht auf bestehende .html-Dateien angewendet wird.
Bleibt noch das Problem mit dem duplicate content.
Damit deine Webseite keine doppelten Inhalte produziert, sollten zusätzlich alle URLs mit der Endung .php permanent auf die .html-Version umgeleitet werden, unter der Bedingen des erstmaligen Aufrufs. Nutze dazu eine 301-Weiterleitung mit folgender RewriteCondition:
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.+?)\.php$ /$1.html [R=301,L]
Alles in allem würde die Anweisung wie folgt aussehen:
RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.+?)\.php$ /$1.html [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+?)\.html$ /$1.php [L]