2011-10-05 19 views
36

Así que quiero restringir el acceso a una url. Ahora bien, si provienen de una dirección IP dada, entonces no se les debe pedir una contraseña. Si no provienen de una dirección IP givin, se les debe pedir una contraseña.htaccess - usando la contraseña O la lista blanca de IP

por lo que un bien o de:

AuthUserFile /some/path/.htpasswd 
AuthName "Please Log In" 
AuthType Basic 
require valid-user 

y:

order deny,allow 

deny from all 
allow from x.x.x.x 

Respuesta

60

Puede utilizar la directiva de Apache "Satisfy".

Aquí es un ejemplo de su uso:

AuthType Basic 
AuthName "Please Log In" 
AuthUserFile /some/path/.htpasswd 
Require valid-user 
Order deny,allow 
Deny from all 
Allow from 127.0.0.1 
Satisfy any 

acceso sin contraseña sólo se permite desde 127.0.0.1.

Espero que esto ayude.

+0

+1 esto es exactamente lo que hago. Además, si desea deshabilitar las comprobaciones en algún directorio (por ejemplo, algunas public /), simplemente coloque en '.htaccess' del subdirectorio: – pwes

+0

' Permitir de todos' y 'Satisfacer cualquiera' – pwes

+0

@Bob: ¿Está funcionando? – FbnFgc

4

con Apache 2.4 Satisfy está todavía disponible, pero deprecated

Nota

Las directrices proporcionadas por mod_access_compat han sido desaprobados por mod_authz_host. Mezclar directivas antiguas como Ordenar, Permitir o Denegar con nuevas como Requerir es técnicamente posible pero desaconsejable. Este módulo se creó para admitir configuraciones que contienen solo directivas antiguas para facilitar la actualización 2.4. Por favor, consulte la guía de actualización para más información.


En su caso, se sustituye por Allow from 1.2.3.4Require ip 1.2.3.4

La combinación de varias Require s (como Require valid-user y Require ip) se puede hacer por Authorization Containers. Por lo tanto, decir que el cliente debe proporcionar una contraseña o proviene de una dirección IP específica, se haría rodeando las directivas con RequireAny, p.

<RequireAny> 
    Require valid-user 
    Require ip 1.2.3.4 
</RequireAny> 

Si bien, este es un caso especial como se describe al final de Require

Cuando varios Exigir directivas se utilizan en una sección de configuración individual y no están contenidos en otra directiva autorización como <RequireAll>, están implícitamente contenidos en una directiva <RequireAny>. Por lo tanto, el primero en autorizar a un usuario autoriza la solicitud completa, y las siguientes directivas Require se ignoran.

En otras palabras, RequireAny aquí es opcional, y se puede sólo lista

Require valid-user 
Require ip 1.2.3.4 
Cuestiones relacionadas