我正在将我的 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 like )将值发布到控制器时会中断/controller?code=something
。
我的问题
1)问号在这个重写中的作用是什么?这是否使index.php成为可选的?
2) 此外,codeigniter 不会像在 get 请求中那样路由带有问号的 url。例如,像这样的获取请求
http://example.com/controller?code=somecodehere
中断并且不调用控制器,而是试图从字面上调用controller?code=somecodehere
. 这个路由可以解决这个问题,但我只是不明白如何。
有关此重写的任何见解都会有所帮助。
谢谢。