Интересный вопрос.
Вот решение:
<Location /fakeindex.php>
Order Deny,Allow
Deny from All
Allow from env=REDIRECT_STATUS
AuthType Basic
AuthUserFile /pathto/htpasswd/file/passwords.secret
AuthName This is an example auth
Require valid-user
</Location>
<Directory /path/to/doc/root>
Order allow,deny
allow from all
RewriteEngine On
RewriteCond %{QUERY_STRING} .
RewriteCond %{REQUEST_URI} index.php
RewriteRule .* fakeindex.php [L,QSA]
</Directory>
Эта часть:
Order Deny,Allow
Deny from All
Allow from env=REDIRECT_STATUS
предназначена для предотвращения прямого доступа к /fakeindex.php (но на самом деле, кто хотел бы обеспечить прямой доступ к охраняемой зоне).Это опционально.
Ключевым моментом является то, что эти условия условия обнаруживают непустую строку запроса и запрос к index.php:
RewriteCond %{QUERY_STRING} .
RewriteCond %{REQUEST_URI} index.php
И это, если они соответствуют правилу:
RewriteRule .* fakeindex.php [L,QSA]
Внутренне перенаправить запрос в /fakeindex.php, сохранив строку запроса с QSA.После этого применяется местоположение и выполняется аутентификация на месте.