Попробуйте это правило:
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)/$ $1.html [L]
И для добавления конечных слешей:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .*[^/]$ %{REQUEST_URI}/ [L,R=301]
Убедитесь, что поставлены те правила, которые вызывают внешнее перенаправление (явно используя R флаг или неявно) перед теми правилами, которые просто вызывают внутреннее перенаправление / перезапись.Так что в этом случае:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .*[^/]$ %{REQUEST_URI}/ [L,R=301]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)/$ $1.html [L]