Вы бы использовали директиву try_files следующим образом:
location / {
try_files $uri $uri.html =404;
}
это делает следующее для каждого URI, который соответствует блоку местоположения
- проверить, есть ли файл с точным соответствием, если так, подайте его
- если точное совпадение не найдено, попробуйте добавить .html к запросу
- если это не было найдено, либо вернуть 404
в этом нет никакого перенаправления, просто nginx проверяет несколько вариантов по очереди.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^.+$ %{REQUEST_FILENAME}.html [L]
первые 2 строки в основном это 1. и 2. за исключением того, что nginx не нужно переписывать URL, поскольку директива try_files делает его достаточно умным, чтобы просто возвращать запрос, когда совпадение найдено