Try this … it will check for a .shtml file, and if not found, will revert to .html
# backward compatibility ruleset for
# rewriting document.html to document.shtml
# when and only when document.shtml exists
# but no longer document.html
RewriteEngine on
# parse out basename, but remember the fact
RewriteRule ^(.*)\\.html$ $1 [C,E=WasHTML:yes]
# rewrite to document.shtml if exists
RewriteCond %{REQUEST_FILENAME}.shtml -f
RewriteRule ^(.*)$ $1.shtml [S=1]
# else reverse the previous basename cutout
RewriteCond %{ENV:WasHTML} ^yes$
RewriteRule ^(.*)$ $1.html