根据请求的 URL 启用或禁用 Apache 密码保护

根据请求的 URL 启用或禁用 Apache 密码保护

Apache 2.2.3 中有一个 CGI 脚本,用于浏览 syslog 服务器上的日志文件。该脚本的调用方式如下:

http://myserver/cgi-bin/logView.cgi?/var/log/syslog-ng/a/b/c/20100923.log

是否有人知道是否可以对访问此 CGI 施加 .htaccess 样式控制,但仅限于浏览某些路径时?我们希望让我们组织中的任何人都可以浏览以下 URL:

http://myserver/cgi-bin/logView.cgi?/var/log/syslog-ng/public/log/201000923.log

但如果有人去:

http://myserver/cgi-bin/logView.cgi?/var/log/syslog-ng/private/log/201000923.log

然后他们会被要求输入密码。基本上我们所有的应用程序都登录到同一个服务器,但有些日志文件只能由某些员工查看。其他的任何人都可以看到。

在此先感谢您的任何建议!

富有的

答案1

我最终找到了解决办法。

ScriptAlias /log-cgi-bin/ "/var/www/log-cgi-bin/"
ScriptAlias /secure-log-cgi-bin/ "/var/www/log-cgi-bin/"

RewriteEngine on
RewriteCond %{QUERY_STRING} ^/var/log/syslog-ng$
RewriteRule ^/log-cgi-bin/(.*)$ /secure-log-cgi-bin/$1 [R=302,L,QSA]

<Location "/secure-log-cgi-bin">
  AuthUserFile /etc/httpd/conf.d/.log-view-htpasswd
  AuthType Basic
  AuthName "Logs"

  Require valid-user
  Satisfy All
</Location>

这基本上完成了工作。RewriteCond应该改进正则表达式,以要求对小于 的任何内容都输入密码/var/log/syslog-ng/

富有的

相关内容