Есть такие правила
RewriteRule ^a.html$ b.html [L]
RewriteRule ^b.html$ a.html [L]
это бесконечный цикл, попробую объяснить логику выполнения и почему это бесконечный цикл
для краткости RewriteRule п1 п2 флаги
##запускаю ссылку
<a src="a.html">ссылка</a>
, запускается первый цикл .htaccess
--первый цикл
##п1=(a.html==a.html) поэтому п1 a.html -> п2 b.html, флаг [L] останавливает первый цикл и сохраняет b.html в этом цикле
--запускается второй цикл
##первая строчка не срабатывает потому что первый цикл держит в себе b.html, п1=(b.html!=a.html)
##выполняется вторая строчка, п1=(b.html==(b.html из первого цикла)) они равны и п1 b.html -> п2 a.html
##теперь второй цикл содержит a.html и сравнивает с первым циклом где b.html, они не равны поэтому запускается следующий цикл и все повторяется.
Это правильная логика .htaccess?
Третий цикл сверяется с предыдущем циклом?