Proteger un archivo con .htaccess y .htpasswd

Tengo algunos problemas para configurar el archivo .htaccess para proteger el acceso a un archivo. El archivo a proteger es: www.mydomain.com/admin/stats.php

Puse el archivo .htaccess en la carpeta www.mydomain.com/admin con el siguiente código:

AuthName "Restricted Area" 
AuthType Basic 
AuthUserFile /
<Files stats.php>
require valid-user
</Files>

El archivo .htpasswd también está en la carpeta www.mydomain.com/admin y contiene el nombre de usuario y la contraseña.

Si trato de acceder a www.mydomain.com/admin/stats.php obtengo un "Error interno del servidor". Creo que el error puede estar en la ruta de "AuthUserFile", pero ¿cómo puedo decirle al archivo que el archivo a proteger está en la misma carpeta que .htpasswd?

El servidor está basado en Linux.

preguntado el 01 de julio de 12 a las 17:07

Lo primero que debes siempre hacer cuando vea un error de Apache es mirar el registro de errores de Apache. Tendrá más información de la que se mostró públicamente en la página de error. -

3 Respuestas

hola, puedes probar esto a continuación:

este es un archivo path.php que mostrará la ruta real de su carpeta principal

<?php 

     echo realpath('path.php'); 

?>

en su .htpasswd necesita tener algo como esto:

username:password

pero la contraseña debe estar encriptada, puedes hacerlo con

<?php 

echo crypt('your_password'); 

?>

y finalmente este es el archivo .htaccess

<Files page_to_protect.php>
AuthName "Message" 
AuthUserFile \realpath_to_htpasswd\.htpasswd 
AuthType Basic
require valid-user
</Files>

Respondido el 24 de Septiembre de 17 a las 11:09

Creo que debe poner la ruta completa al archivo htpasswd: es decir.

AuthUserFile /home/-usuario-/-sitio-/.htpasswd

Respondido 01 Jul 12, 17:07

gracias, pero ¿qué necesito escribir en lugar del campo "usuario" y "sitio"? Tengo 2 usuarios (y 2 contraseñas). - nicolasse

Esta es solo una ruta completa a su archivo .htpasswd. Me ejecuto en un sistema alojado donde coloco mi archivo .htpasswd en mi carpeta de inicio: Bjorne Malmanger

Puede usar phpinfo(); función en PHP para encontrar la ruta de su sistema de archivos: - Bjorne Malmanger

del apache documentación:

File-path es la ruta al archivo de grupo. Si no es absoluto, se trata como relativo a ServerRoot.

Eso significa que especifica la ruta completa (absoluta) al .htpasswd archivo o uno relativo a cualquiera que sea su ServerRoot es. Ejemplo:

AuthUserFile /www/passwords/.htpasswd

Respondido 01 Jul 12, 18:07

tenga en cuenta que debe especificar la ruta completa al archivo, lo que significa incluyendo el nombre del archivo. - helado

Cambio el código con este AuthUserFile /www/.htpasswd pero aún no funciona. Mi problema es que .htaccess, .htpasswrd y stats.php están en la misma carpeta, entonces, ¿qué ruta relativa debo escribir? - nicolasse

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.