如何使.htaccess可以访问PHP变量?

时间:2014-12-07 01:10:04

标签: php .htaccess

我想从PHP中分配一个变量,并将所述变量提供给我的.htaccess文件,以便它可以使用该值,例如,拒绝或允许访问。

示例index.php文件:

<?php
  session_start();
  $_SESSION['REMOTE_USER'] = 'valid';
  $_SERVER['REMOTE_USER'] = 'valid';
  $_ENV['REMOTE_USER'] = 'valid';
  putenv('REMOTE_USER=valid');
  print 'You are allowed.';

以下是我在.htaccess文件(与index.php位于同一目录中)内所尝试的一个示例:

# Doesn't work... Always denied.
SetEnvIf Remote_User valid allowed
SetEnvIf Remote_User notvalid disallowed
Deny from all
Allow from env=allowed

有没有办法根据PHP提供的值允许或拒绝通过.htaccess进行访问?

3 个答案:

答案 0 :(得分:3)

在运行PHP脚本之前,.htaccess文件运行。换句话说,你所描述的是不可能的。

答案 1 :(得分:2)

服务器 PHP文件之前读取

.htaccess,所以你所寻求的是非常不可能的。

另一方面,您可以在.htaccess

中设置PHP变量
SetEnv HTTP_MY_VARIABLE "my value"

也许 会以某种方式帮助你

答案 2 :(得分:2)

正如其他答案已经说明的那样,你有鸡/蛋问题:PHP运行的事实意味着.htaccess没有理由禁止它,并且它的工作已经完成。

拒绝访问PHP中的页面,您应该在其中执行更复杂的身份验证和授权,但这是微不足道的:

if($myUser->shouldNotBeHere()) {
  header('HTTP/1.1 403 Forbidden');
  die('Access denied!');
}

这看起来与浏览器的Apache级deny相同。