假设我们有下面的PHP页面 “的index.php”:Apache的mod_rewrite和%{REQUEST_URI}问题
<?
if (!isset($_GET['req'])) $_GET['req'] = "null";
echo $_SERVER['REQUEST_URI'] . "<br>" . $_GET['req'];
?>
及以下 “的.htaccess” 文件:
RewriteRule ^2.php$ index.php?req=%{REQUEST_URI}
RewriteRule ^1.php$ 2.php
现在,让我们访问“index.php”。我们得到这个:
/index.php
null
这很酷。让我们访问“2.php”。我们得到这个:
/2.php
/2.php
这也很酷。但是,现在让我们来看看“1.PHP”:
/1.php
/2.php
所以......我们索要“1.PHP”,它静静地重定向到“2.PHP”的默默重定向到“的index.php ?req =%{REQUEST_URI}“,但这里的”%{REQUEST_URI}“似乎是”2.php“(我们正在寻找的页面,在之后的第一次重定向)和$ _SERVER ['REQUEST_URI']是“1.php”(原始请求)。
这些变量不应该相等吗?由于我试图仅基于原始请求进行重定向,因此今天给了我很多头痛。在“.htaccess”中是否有任何变量可以在重定向后告诉我原始请求?
在此先感谢,希望我已经说清楚了。这是我在这里的第一篇文章:)
为什么不简单使用`$ _SERVER ['REQUEST_URI']`? – Gumbo 2009-08-03 12:53:52