如何在apache/htaccess配置中进行配置:
我希望HTTP-身份验证的所有文件,但有一个例外。从1.2.3.4开始,无需任何身份验证即可访问文件click.php和js/clickheat.js。
我试过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主机。
发布于 2012-06-27 17:16:21
好吧,我找到了一个解决方案:
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的访问。
https://stackoverflow.com/questions/11222343
复制相似问题