用户和ip的htaccess身份验证,特殊文件的例外

时间:2013-02-13 16:38:37

标签: .htaccess apache2

我想对apache2-webserver(2.2.9(Debian))上的某些文件进行访问控制,具体取决于remote-ip和使用htaccess文件提供的用户名。

规则:

  1. 来自localhost的所有用户都可以访问所有文件,不应该要求他们自己进行身份验证。
  2. 来自远程主机的用户必须通过http-basic身份验证进行身份验证。他们还可以访问除单个文件之外的所有文件,这些文件对他们来说应该是不可见的。
  3. 我在下面发布的htaccess文件允许远程用户登录并禁止访问adm.php。不幸的是,localhost用户需要输入密码。为了让本地用户在没有输入密码对话框的情况下访问adm.php,我需要更改什么?

    AuthType Basic
    Authname "Test-App"
    AuthUserFile /etc/web_passwd
    Require valid-user
    Order Deny,Allow
    Allow from 127.0.0.1
    Deny from all
    Satisfy Any
    
    <Files adm.php>
       Order Deny,Allow
       Allow from 127.0.0.1
       Deny from all
       Satisfy all
    </Files>
    

1 个答案:

答案 0 :(得分:1)

启用mod_setenvif,然后在$DOCUMENT_ROOT/.htaccess

中使用以下代码
<Files "adm.php">
   Order Deny,Allow
   Deny from all
   Allow from 127.0.0.1
   Satisfy all
</Files>

<FilesMatch "(?!^adm\.php)^.*$">
   AuthType Basic
   Authname "Test-App"
   AuthUserFile /etc/web_passwd
   Require valid-user

   Order      deny,allow
   Deny from  all
   Allow from 127.0.0.1
   Satisfy    any
</FilesMatch>