0

我在 htaccess 文件中有以下规则

RewriteEngine On
RewriteRule mytest.php test.php
RewriteCond %{QUERY_STRING} !done
RewriteRule (.*)  $1?done [E=TEST:itworks]

文件 test.php 很简单

<?php
echo "TEST = " . getenv('TEST'); 
?>

当我输入请求 uri test.php 时,定义了环境变量 TEST 并回显“Test = itworks”。但是,当我输入请求 uri mytest.php 时,它也会转到 test.php,但未定义环境变量 TEST 并回显 'Test =' 。

这是预期的行为吗?如果这是我环境中的错误,请不要介意。否则,也许有人可以用那个简单的案例向我解释它是如何工作的。

4

1 回答 1

0

当您通过mytest.php时,通过 mod_rewrite 会有额外的一轮。

然后环境变量以 . 为前缀REDIRECT_。如果您检查REDIRECT_TEST,您将看到所需的输出

<?php
echo "TEST = " . getenv('TEST') . "/" . getenv('REDIRECT_TEST');

有关详细信息,请参阅可用变量

于 2013-04-25T02:08:47.407 回答