我有一个很奇怪的谜团。我有一个相当简单的 Apache Rewrite,出于某种奇怪的原因,它弄乱了我的 php Superglobals。首先Rewrite如下:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
当此规则到位时,唯一的超全局变量是 $_GET 和 $_REQUEST(当然 $REQUEST 会这样做,因为它是从 $_GET,... 获取它们的)。无论我在 URL 中输入什么,我都只会收到 /index_php 作为唯一的键,它没有任何价值。起初我以为我的代码搞砸了,但作为索引文件的第一行,我尝试了以下操作:
foreach($_GET as $key => $value)
{
echo "$key = $value<br/>";
}
foreach($_POST as $key => $value)
{
echo "$key = $value<br/>";
}
foreach($_REQUEST as $key => $value)
{
echo "$key = $value<br/>";
}
唯一打印的是“/index_php =”两次。我之前已经搞砸了几次重写,但显然我做错了。作为旁注,这是我的预期行为:
URL: localhost/users/dashboard?item=id
这会给我 $_GET 超全局键:项目,值:id。任何帮助是极大的赞赏。