2012-01-04 17 views
6

En mi servidor tengo el siguiente archivo .htaccess:conseguir "Se requiere autenticación" al solicitar/en lugar de /index.php

DirectoryIndex index.php 

AuthType Basic 
AuthName "Password Required" 
AuthUserFile /var/www/webinterface/.htpasswd 
Options +FollowSymLinks 
Require valid-user 

<Files index.php> 
    Satisfy any 
    Allow from * 
</Files> 

Si solicito la URL "IP-ADDRESS/index.php", todo funciona bien, obtengo el index.php mostrado sin una solicitud de autenticación. Sin embargo, tan pronto como solicite "IP-ADDRESS /", el navegador me pide mis credenciales.

¿Por qué es este el caso? ¿Qué me estoy perdiendo?

+0

Wow, usted tuvo literalmente el mismo problema y la misma configuración que yo, qué coincidencia –

Respuesta

7

Intente reemplazar el bloque para usar mod_setenvif para verificar el URI de solicitud en lugar de usar <Files>. Los módulos mod_auth * tienen prioridad sobre mod_dir, por lo que la asignación de / a /index.php no ocurre hasta después de que se realiza la autenticación. Mod_setenvif ocurrirá antes de la autenticación. Proveedores:

SetEnvIf Request_URI "^/$" allow=yes 
SetEnvIf Request_URI "^/index.php$" allow=yes 

AuthType Basic 
AuthName "Password Required" 
AuthUserFile /var/www/webinterface/.htpasswd 
Options +FollowSymLinks 
Order Deny,Allow 
Satisfy any 
Deny from All 
Require valid-user 
Allow from env=allow 

Si el URI solicitado es exactamente / o /index.php, la variable allow consigue el sistema. Lo que sigue a las líneas de autenticación dice que se niegue todo excepto un usuario válido o si se ha establecido la variable allow.

+0

wow, estoy profundamente impresionado. Eso fue un gran anser. Muchas gracias – ftiaronsem

+0

¿No tiene que poner el bloque que comienza con AuthType en una directiva , o etc.? –

+0

¿Puede ayudarme a entender cómo hacer lo opuesto a esto? Quiero permitir el acceso a todos los archivos y subdirectorios dentro de un directorio sin protección de contraseña, pero sí quiero requerir autenticación de contraseña para/o /index.php. Cuando protejo con contraseña el archivo index.php, todavía puedo acceder/sin contraseña. Creo que su respuesta anterior contiene las reglas necesarias para revertir lo anterior y hacer que funcione para mi caso, pero no entiendo SetEnvIf etc. lo suficientemente bien como para escribirlo. – WilliamAlexander

Cuestiones relacionadas