这简直太奇怪了。
我已经把下面的.htaccess文件中:
RewriteRule ^a-file-on-the-server$ index.php [E=let_me_in:test]
在我的PHP脚本中,我有以下几点:
print_r($_ENV);
…打印出所有的环境variables。
当我去mydomain.com /a-file-on-the-server ,我得到的输出是:
排列
(
[DOCUMENT_ROOT] => ********
[GATEWAY_INTERFACE] => CGI / 1.1
[HTTP_ACCEPT] => application / xml,application / xhtml + xml,text / html; q = 0.9,text / plain; q = 0.8,image / png,* / *; q = 0.5
[HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8; q = 0.7,*; q = 0.3
[HTTP_ACCEPT_ENCODING] => gzip,deflate,sdch
[HTTP_ACCEPT_LANGUAGE] => en-US,en; q = 0.8
[HTTP_CACHE_CONTROL] => max-age = 0
[HTTP_CONNECTION] =>保持活动
[HTTP_COOKIE] => ********
[HTTP_HOST] => ********
AppleWebKit / 533.4(KHTML,如Gecko)Chrome / 5.0.375.99 Safari / 533.4(HTTP / USER_AGENT)=> Mozilla / 5.0(X11; U; Linux x86_64; en-
[PATH] => / bin:/ usr / bin
[QUERY_STRING] =>
[REDIRECT_STATUS] => 200
[REMOTE_ADDR] => ********
[REMOTE_PORT] => 36345
[REQUEST_METHOD] => GET
[REQUEST_URI] => ********
[SCRIPT_FILENAME] => ********
[SCRIPT_NAME] => ********
[SERVER_ADDR] => ********
[SERVER_ADMIN] => ********
[SERVER_NAME] => ********
[SERVER_PORT] => 80
[SERVER_PROTOCOL] => HTTP / 1.1
[SERVER_SIGNATURE] =>
[SERVER_SOFTWARE] => Apache
[UNIQUE_ID] => ********
)
正如你所看到的,环境variables没有显示出来。 我究竟做错了什么?
看起来不正确的一件事是你正在使用的正则expression式。 请记住,正则expression式匹配整个请求URI,它始终以/开头。 你写它的方式,它只会匹配,如果请求开始与一个a-file...将永远不会是这样的。
尝试使用这个,而不是(我只在^后添加了/ ):
RewriteRule ^/a-file-on-the-server$ index.php [E=let_me_in:test]
你的规则可能还有其他部分是不正确的,但是我对环境variables没有太多的经验。
嘿,我正在做一些testing,当设置env var,
我做你喜欢的东西[E =variables:值,其他标志/值,(..)]
并在我的PHP文件,我看到$ _SERVER ['variables']中的增值税设置
你可能想要得到你的变种:
echo $ _SERVER ['let_me_in'];
肩部输出testing。
我今天在这个问题上跑了一些Apache mod_rewrite的工作。 问题是,PHP将定义为重写规则一部分的环境variables放入$ _SERVER,而不是$ _ENV(并且它改变了env var名称)。
包括一个RewriteRule如
RewriteRule ^a-file-on-the-server$ index.php [E=let_me_in:test]
在我的设置(CentOS6与Apache 2.2.15和PHP 5.3.3),将提供variables$ _SERVER ['REDIRECT_LET_ME_IN'],这样的index.php与内容:
<?php print_r($_SERVER['REDIRECT_LET_ME_IN']); ?>
会显示文字:
test
我使用phpinfo()函数调用来调查此问题,并build议在debugging时查看所有可用的$ _ENV和$ _SERVER键/值对。