linux - 无法让 setenv 在 .htaccess 中工作

标签 linux apache .htaccess

SetEnv 似乎对我不起作用。我在我的 .htaccess 中试过这个:

SetEnvIf Remote_Addr ^192\.168\.0$ ip_ok
<IfDefine !ip_ok>
  AuthName "Guest Login"
  AuthType Basic
  AuthUserFile /opt/lampp/lib/ok_users/guests.users
  require valid-user
</IfDefine>

即使我的 ip 是 192.168.0.10 并且服务器(centos5/xampp for linux 1.6.8a)是 192.168.0.1,我也必须提供用户名/密码凭证

所以我尝试了这个:

SetEnv ip_ok
<IfDefine !ip_ok>
  AuthName "Guest Login"
  AuthType Basic
  AuthUserFile /opt/lampp/lib/ok_users/guests.users
  require valid-user
</IfDefine>

但是 setenv 没有设置 ip_ok,我还是遇到了挑战。

然后我试了一下:

SetEnv ip_ok
<IfDefine ip_ok>
  AuthName "Guest Login"
  AuthType Basic
  AuthUserFile /opt/lampp/lib/ok_users/guests.users
  require valid-user
</IfDefine>

而且我不会受到挑战。因此 IfDefine 正在运行。

为什么我不能让 SetEnv 和 SetEnvIf 工作?我用谷歌搜索和阅读但无法破解。

最佳答案

<IfDefine>不像你想的那样工作。它检查传递给 httpd at startup 的参数通过-Dparameter (或 Apache 2.3 中的 Define ),而不是环境变量。

不过没关系,你应该能够像这样做你想做的事:

Order allow,deny
AuthName "Guest Login"
AuthType Basic
AuthUserFile /opt/lampp/lib/ok_users/guests.users
Require valid-user
Allow from 192.168.0
Satisfy Any

Satisfy directive , 当设置为 Any , 如果您通过主机验证,如果您提供了密码,则允许您被授予访问权限。

关于linux - 无法让 setenv 在 .htaccess 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3688280/

相关文章:

java - 使用 Apache Mahout - MinLLR 参数对文档进行矢量化

php - 重定向 *.php 到干净的 URL

apache - .htaccess 重定向添加哈希,同时保留查询字符串

c - GTK 可移植性 - Linux 库

linux - 如何为 Linux 终端前景和背景文本着色

linux - 通过 JIRA 中的 groovy 关闭工单

Apache 重新编译对已安装的 SSL 的影响

c - 对套接字对的读/写是完全同步的还是有缓冲?

linux - Grep 源代码(不包括构建文件夹)

apache - 将.htaccess转换为nginx(mod_rewrite)