首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache重写破坏了PHP SuperGlobals

Apache重写破坏了PHP SuperGlobals
EN

Stack Overflow用户
提问于 2012-05-08 08:50:49
回答 1查看 142关注 0票数 1

我有一个很奇怪的谜团。我有一个相当简单的Apache重写,出于某种奇怪的原因,它弄乱了我的php Superglobals。首先,重写如下:

代码语言:javascript
复制
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

当这个规则就位时,唯一的超全局变量是$_GET和$_REQUEST (当然$REQUEST是这样做的,因为它从$_GET中获取它们,...)。无论我在URL中放入什么,我只接收到/index_php作为唯一的键,它没有任何价值。起初,我以为我把代码搞乱了,但作为索引文件的第一行,我尝试了以下命令:

代码语言:javascript
复制
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 =“两次。我以前做过几次重写,但很明显我做错了什么。顺便说一句,这是我的预期行为:

代码语言:javascript
复制
URL: localhost/users/dashboard?item=id 

这将为我提供带有key: item,value: id的$_GET超级全局。任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-08 08:52:38

您需要在重写规则中传递原始查询字符串:

代码语言:javascript
复制
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
                                    ^^^

这样,不管您将来可能添加的新值如何,旧的值也会被传递。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10491093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档