.htaccess / .htpasswd绕过,如果在某个IP地址

是否有可能为给定的目录有.htaccess / .htpasswd访问控制设置,但是如果它们来自特定的IP地址,绕过login/密码authentication?

我知道你可以在.htaccess文件中做这样的事情:

order deny,allow deny from all allow from 000.000.000.000 

但是,如果你添加这样的话:

 AuthType Basic AuthName "restricted area" AuthUserFile /path/to/.htpasswd require valid-user 

然后它提示input密码。 有没有办法做一个if / elsetypes的设置,或其他解决scheme,使用户作为一个给定的IP(或一组IP)没有得到提示input密码,但其他人呢?

对于2.2.X版本,您可以使用以下…

 AuthUserFile /var/www/mysite/.htpasswd AuthName "Please Log In" AuthType Basic require valid-user Order allow,deny Allow from xxx.xxx.xxx.xxx satisfy any 

显然取代你的用户文件的path和你想绕过authentication的IP地址。

有关详情的进一步解释,请参阅: http : //httpd.apache.org/docs/2.2/howto/auth.html

如果你使用apache> = 2.4,它会是这样的:

 <If "%{REMOTE_ADDR} != '127.0.0.1'"> AuthType Basic AuthName "restricted area" AuthUserFile /path/to/.htpasswd require valid-user </If> 

有关更多信息,请参阅文档 。

我正在运行Apache / 2.2.16(Debian),并有类似的问题,我解决了这样的问题:

(这可以在.htaccess文件中运行,也可以直接在<Location/>下的虚拟主机中运行)

 Order deny,allow Deny from all AuthType Basic AuthUserFile /home/somesite/.htpasswd AuthName "No entry, unless" Require Valid-user Allow from xxxx Allow from xxxx Satisfy Any 

我允许从两个不同的IPinput密码,其余的必须input密码才能进入。

除了j5Dev的回答:

 # Interne IP-Adressen SetEnvIf Remote_Addr "^127\.0\.0\.1$" IsIntern SetEnvIf Remote_Addr "^192\.168" IsIntern # .. add more IP addresses or ranges here # Authentication, wenn nicht intern AuthUserFile /path/to/.htpasswd AuthName "restricted area" AuthType Basic require valid-user Order allow,deny Allow from env=IsIntern satisfy any