У вас ограниченный «цикл перезаписи» (ограничен только 2 итерациями). Используйте эти правила:
# do not do anything for already existing files
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .+ - [L]
RewriteRule ^([a-z0-9_\-]+)(\.php)?$ index.php?page=$1 [NC,L,QSA]
Если вам это не нравится, вот альтернатива (но я все же предпочитаю # 1, но, возможно, этот будет лучше для вашей логики установки / приложения - это предполагает, что index.php
находится в корневой папке сайта) :
RewriteCond %{REQUEST_URI} !^/index.php
RewriteRule ^([a-z0-9_\-]+)(\.php)?$ index.php?page=$1 [NC,L,QSA]