Seguramente habrás leído muchas guías explicando cómo proteger tu escritorio de WordPress frente a intrusos protegiéndolo mediante contraseña ¿verdad? Si ir más lejos, aquí mismo: una – dos – tres. Pero no debes hacerlo, porque hay un problema.
Índice de contenidos
¿Cuál es el problema?
Es un problema importante, pues de ese modo impedirás las peticiones a admin-ajax.php
y admin-post.php
.
Por si no lo has visto, o no te acuerdas, en el Codex de WordPress hay una página de cómo implementar AJAX, donde se explica que admin-ajax.php
está dentro /wp-admin/
.
Entonces ¿qué pasa? Pues que si usas protección mediante contraseña para el directorio /wp-admin/
estarás bloqueando el acceso a esos archivos, lo que implica que se bloquearán todas las peticiones AJAX, algo actualmente impensable, y que puede dejar tu sitio prácticamente inservible.
¿Cuál es la solución?
Afortunadamente, como todo en WordPress, hay una fácil solución para proteger tu escritorio, al tiempo que permites las peticiones AJAX, así:
AuthType Basic AuthName "Página protegida" AuthUserFile /home/.htpasswd Require valid-user <Files admin-ajax.php> Order allow,deny Allow from all Satisfy any </Files> <Files admin-post.php> Order allow,deny Allow from all Satisfy any </Files> <Files "\.(css|gif|png|js)$"> Order allow,deny Allow from all Satisfy any </Files>
Añadiendo el código anterior a nuestro archivo .htaccess
conseguimos bloquear el acceso a la carpeta /wp-admin/
pero no a admin-ajax.php
y admin-post.php
ni, de paso, a los archivos css/gif/png/js.
Para generar el archivo .htpasswd
te recomiendo pasarte por htaccesstools.com para crearlo y luego cópialo en tu servidor en la ruta del ejemplo /home/.htpasswd
u otra. Por supuesto, adapta el código anterior a la ruta donde finalmente esté tu archivo .htpasswd
.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
Hola Fernando, he implementado el código y ha funcionado (la primera vez), en adelante bloquea el sitio por completo con el error 500
Hola Fernando.
Yo tampoco consigo que funcione (podria ser el codigo?). Gracias.