【发布时间】:2009-08-01 20:25:00
【问题描述】:
假设我们有以下 PHP 页面“index.php”:
<?
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" (原始请求)。
这些变量不应该相等吗?这让我今天很头疼,因为我试图仅基于 original 请求进行重定向。我可以在“.htaccess”中使用任何变量,即使在重定向之后也会告诉我原始请求?
提前谢谢,我希望我已经说清楚了。这是我在这里的第一篇文章:)
【问题讨论】:
标签: php apache mod-rewrite request