Не могу заставить setenv работать в .htaccess - PullRequest
0 голосов
/ 11 сентября 2010

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 для 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 работать? Я гуглил и читал, но не могу взломать.

1 Ответ

1 голос
/ 12 сентября 2010

<IfDefine> не работает, как вы думаете. Он проверяет параметры, переданные в httpd при запуске через -Dparameter (или Define в Apache 2.3), а не переменные среды.

Это нормально, но вместо этого вы должны делать то, что хотите:

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 , установленная на Any, позволяет вам получить доступ, если вы пройдете проверку хоста, или , если вы указали пароль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...