Краткий обзор говорит о том, что ваши исходные правила, скорее всего, никогда не будут достигнуты, поскольку правила WP должны перехватывать все запросы.
Эта строка RewriteRule ^ - [L]
с этими условиями прервет перезапись для любых уже существующих файлов или папок, а эта строка RewriteRule . index.php [L]
будет перехватывать / перенаправлять все запросы на index.php
.
Если вы перенесете свои правила выше, чем WordPress, он снова заработает.
Чтобы переписать запрос несуществующего файла .php в файл .html, используйте это правило:
# rewrite non-existing .php file to existing .html
RewriteCond %{DOCUMENT_ROOT}/$1.php !-f
RewriteCond %{DOCUMENT_ROOT}/$1.html -f
RewriteRule ^(.+)\.php$ $1.html [L,PT]
Поместите его под ваши правила (но выше WP). Правило проверит, не существуют ли файлы .php, и перезапись произойдет только при наличии файла .html. Если оба файла недоступны, то ничего не произойдет.
Имейте в виду, что из-за этих проверок и того факта, что правило находится в верхней части цепочки перезаписи, это правило будет оцениваться для каждого запроса в файл .php (даже на страницы WP), что может оказать дополнительное давление на очень загруженный сервер , В идеале вы хотели бы иметь правильные URL в первую очередь, чтобы не было необходимости в таких манипуляциях.