Protegendo diretórios com .httaccess em instalações wordpress
Estou postando com a esperança de que o próximo que passar por esse irritante problema não fique horas batendo cabeça até googlar alguma coisa. Simples assim.
Você resolve proteger com senha uma pasta qualquer no seu servidor, usa o clássico .httaccess + .htpasswd, e essa pasta está dentro do diretório em que você tem uma instalação do wordpress. Na hora de testa você vai parar na página de error 404 do seu blog. WTF !?!?
O problema é que o wordpress usa o mod_rewrite para criar urls amigáveis, na hora que ele tenta acessar o diretório esbarra no problema de autenticação. Como a bola está com o wordpress, você toma um 404, ao invés do 401 e uma caixa de dialogo pra se autenticar.
Pra resolver é simples, basta mapear uma página de error 401 antes do mod_rewrite no .httaccess do wordpress. Basta apontar para um html qualquer, informando que autenticação é necessária. O arquivo ficaria assim:
[sourcecode language="bash"]
ErrorDocument 401 ./401.html
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END
[/sourcecode]
Oi Victor!
Legal encontrar esse post, mas comigo ainda sigo com o problema!
tento entrar em um diretório dentro da minha instalação do wordpress e ganho um erro.
Eu uso o WordPress MU
========================
ErrorDocument 401 ./401.html
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ – [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
# END WordPress
========================
Você consegue ver alguma outra possibilidade?
Na mesma instalação do WordPress tem outros diretórios que funcionam, só um deles que parou de funcionar.