2

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

我想要对所有文件进行 HTTP 身份验证,但有一个例外。click.php无需任何身份js/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 主机。

4

1 回答 1

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-06-27T09:16:21.247 回答