这个codeigniter nginx重写中的问号是什么意思?
我正在将codeigniter文件从apache迁移到nginx,并查看nginx的重写。为了删除codeigniter index.php,我遇到了以下重写这个codeigniter nginx重写中的问号是什么意思?,codeigniter,nginx,rewrite,url-routing,Codeigniter,Nginx,Rewrite,Url Routing,我正在将codeigniter文件从apache迁移到nginx,并查看nginx的重写。为了删除codeigniter index.php,我遇到了以下重写 if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?/$1 last; break; } 重写有效。但是,我不太理解/index.php?/部分 更新: 我在没有问号的情况下尝试了重写,比如rewrite^/(.*)$/index.php/$1 last。它适用
if (!-e $request_filename)
{
rewrite ^/(.*)$ /index.php?/$1 last;
break;
}
重写有效。但是,我不太理解/index.php?/
部分
更新:
我在没有问号的情况下尝试了重写,比如rewrite^/(.*)$/index.php/$1 last代码>。它适用于普通控制器,但当第三方(如fb oauth)向控制器发送值时,它会中断,如/controller?code=something
我的问题
1) 问号在这次重写中扮演什么角色?这是否使index.php成为可选的
2) 此外,codeigniter不会像get请求中那样用问号路由url。例如,像这样的get请求
http://example.com/controller?code=somecodehere
中断并不调用控制器,但尝试直接调用controller?code=somecodehere
。这个路由解决了这个问题,但我不明白怎么做
任何关于这次重写的见解都会很有帮助
谢谢 它不是regexp的一部分,只是重写url中的一个问号
所以
abc
变成:
/index.php?/abc
您应该知道-get
php中的参数是在问号登录url后传递的
现在index.php
中的codeigniter可以从$\u服务器['QUERY\u STRING']
读取,并将获得/abc
。从这里,它可以加载适当的控制器,因此,它调用index.php?/controller
这样的每个请求是否都一样,即使url中没有get参数?是的,它只是将/anything?something
重写为/index.php?/anything%3Fsomething
,并在index.php
中处理。在那之后就没有魔法了,在这次重写中如何处理对控制器的请求?像/controller?code=something
这样的东西是如何处理的?codeigniter在$\u服务器['QUERY\u string']
中以字符串的形式获取它并处理它