Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个codeigniter nginx重写中的问号是什么意思?_Codeigniter_Nginx_Rewrite_Url Routing - Fatal编程技术网

这个codeigniter nginx重写中的问号是什么意思?

这个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。它适用

我正在将codeigniter文件从apache迁移到nginx,并查看nginx的重写。为了删除codeigniter index.php,我遇到了以下重写

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']
中以字符串的形式获取它并处理它