PHP的很多框架裡面都是通過獲取$_SERVER['PATH_INFO']處理路由 , 這個變數是通過nginx傳遞過來的 , 我們在nginx中經常見到下麵兩句 fastcgi_split_path_info ^(.+\.php)(/.*)$;fastcgi_param PATH_INFO $fa ...
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']