我有一个很奇怪的谜团。我有一个相当简单的Apache重写,出于某种奇怪的原因,它弄乱了我的php Superglobals。首先,重写如下:
<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 这将为我提供带有key: item,value: id的$_GET超级全局。任何帮助都是非常感谢的。
发布于 2012-05-08 08:52:38
您需要在重写规则中传递原始查询字符串:
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
^^^这样,不管您将来可能添加的新值如何,旧的值也会被传递。
https://stackoverflow.com/questions/10491093
复制相似问题