Prioridade do Apache FilesMatch (configuração global) sobre .htaccess local

Prioridade do Apache FilesMatch (configuração global) sobre .htaccess local

Quero proteger todas as interfaces administrativas do Wordpress (wp-login.php/wp-admin) no meu servidor. Para fazer isso, quero criar uma configuração global no Apache, solicitando um usuário/senha fixos (autenticação básica HTTP), antes de chegar à página de login real do WordPress. Isso evitará a sobrecarga do PHP de bots de verificação de senha.

<FilesMatch "wp-login.php">
 AuthUserFile /etc/wordpress.passwd
 AuthName "TYPE USER wp AND PASSWORD wp"
 AuthType Basic
 require valid-user
</FilesMatch>

Funciona, qualquer arquivo chamado wp-login.php solicitará a senha.

Mas quando executo um site Wordpress, é.htaccesstem algum tipo de "prioridade" sobre a configuração global. Quando acesso wp-login.php acabo de receber um erro 404. Se eu remover/renomear .htaccess, o FilesMatch funciona, mas perdi o recurso "path mask", que é necessário.

Wordpress .htaccess é:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Estou procurando uma maneira de a diretiva FilesMatch ter prioridade sobre o .htaccess (módulo Rewrite): peça a senha, não reescreva a URL (dando 404).

Alguma ideia?

Responder1

Resolvido

Wordpress .htaccess reescreve tudo, incluindo as diretivas ErrorDocument, que são usadas pela autenticação básica HTTP, códigos de retorno 401 e 403. Eu tinha arquivos SHTML personalizados para ErrorDocument (padrão em servidores cPanel). Então, em vez de pedir uma senha, ele reescreve os cabeçalhos HTTP, pedindo a senhaemostrando uma página de erro 404 ao mesmo tempo, deixando o navegador louco.

Para corrigir, apenas forcei as mensagens ErrorDocument padrão:

ErrorDocument 401 default
ErrorDocument 403 default

informação relacionada