【问题标题】:htaccess: Conditional Authenticationhtaccess:条件认证
【发布时间】:2012-06-28 15:45:57
【问题描述】:

如何在我的 apache/htaccess 配置中进行配置:

我想要对所有文件进行 HTTP 身份验证,但有一个例外。 文件click.phpjs/clickheat.js 无需任何身份验证即可从1.2.3.4 访问。

我尝试了 FilesMatch,但无法反转它。所以我不能把require valid-user 放在那里。我想使用SetEnv,但是我以后如何检查呢?

<FilesMatch "(click\.php|clickheat\.js)">
    # what here?
</FilesMatch>

我的另一个想法是使用 mod_rewrite。好吧,我可以允许从给定主机访问这两个文件,并从其他任何地方拒绝它。但是我如何将它与 HTTP-Authentication 链接起来呢?

# allows access to two files from the given IP
RewriteCond %{REMOTE_ADDR} 1\.2\.3\.4
RewriteCond %{REQUEST_URI} ^/click.php [OR]
RewriteCond %{REQUEST_URI} ^/js/clickheat\.js
RewriteRule (.*) - [L]

# denies everything else
RewriteRule (.*) - [F,L]

所以我最喜欢的解决方案是通过 RewriteCond/RewriteRule 启用 HTTP-Auth。

背景(或我为什么要这样做):我正在尝试确保 clickheat (http://www.labsmedia.com/clickheat/index.html) 安装。而 1.2.3.4 是远程运行 mod_proxy 并将对这些文件的访问重定向到我们的 clickheat 主机。

【问题讨论】:

    标签: apache .htaccess mod-rewrite mod-auth


    【解决方案1】:

    好的,我找到了解决办法:

    Order Deny,Allow
    Deny from All
    
    Satisfy Any
    
    AuthType Basic
    AuthName "clickheat"
    AuthUserFile /var/www/clickheat/.htpasswd
    Require valid-user
    
    <FilesMatch "(click\.php|clickheat\.js)">
            Deny from All
            Allow from 1.2.3.4
    </FilesMatch>
    

    密钥是Satisfy Any,它允许基于 IP 或 Auth 的访问。

    【讨论】:

      猜你喜欢
      • 2012-07-18
      • 2012-08-03
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      • 2014-12-18
      • 2016-12-17
      • 2013-08-27
      • 2012-12-13
      相关资源
      最近更新 更多