我想从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
进行访问?
答案 0 :(得分:3)
在运行PHP脚本之前,.htaccess
文件运行。换句话说,你所描述的是不可能的。
答案 1 :(得分:2)
.htaccess
,所以你所寻求的是非常不可能的。
另一方面,您可以在.htaccess
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
相同。