<FilesMatch ^(index.php)$>
require valid-user
Ein Versuch die Lösung zu erklären:
- Mit der ersten FilesMatch-Direktive kriegt der Server zuerst die Anweisung alle Dateien (außer index.php!) mit einer Passwortabfrage zu schützen.
Du hast aber genau das Gegenteil gepostet. "Wenn index.php, dann require valid-user".