Ответ от @ david-wolever перенаправляет все, что не заканчивается на .html (или корень), на один и тот же URL с добавленным расширением .html, то есть добавляет расширение .html к таким вещам, как файлы CSS и JavaScripts, например он перенаправит /style.css в /style.css.html, что вряд ли то, что вы хотите. У этого также есть места после! символ, который вероятно вызвал @greggles 500s
Это перенаправляет URL-адреса, которые не заканчиваются точкой, за которой следуют 3 или 4 буквенно-цифровых символа:
RewriteEngine On
RewriteCond %{REQUEST_URI} !\.[a-zA-Z0-9]{3,4}
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.*)$ $1.html
Или для более точного контроля зерна, добавьте в белый список расширения, которые вы не хотите добавлять .html добавьте, например,
RewriteCond %{REQUEST_URI} !\.(html|css|js|less|jpg|png|gif)$