PHP的很多框架里面都是通過獲取$_SERVER['PATH_INFO']處理路由 , 這個變量是通過nginx傳遞過來的 , 我們在nginx中經常見到下面兩句
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
這兩句是什么意思呢?
nginx默認獲取不到PATH_INFO的值,得通過fastcgi_split_path_info指定定義的正則表達式來獲取值
^(.+\.php)(/.*)$; 這個正則表達是有兩個小括號 , 也就是有兩個捕獲
第二個捕獲到的值會自動重新賦值給$fastcgi_path_info變量。
第一個捕獲的值會重新賦值給$fastcgi_script_name變量。
如果訪問 /index.php/test ,第二個捕獲的是/test $fastcgi_path_info就是/test,因此就會把/test傳遞給php的$_SERVER['PATH_INFO']