本配置示例在ThinkPHP5 環境下親測有效,二級目錄配置與根目錄配置徹底獨立。主要是經過 ^~ 把sub路徑的路由所有接收過來,而後在子location裏面進行二次路由和解析,比較方便靈活。以前一直覺得location是不能嵌套的,經過此次實踐,發現這樣用的好處了,確實很方便。php
server { listen 80 ; index index.php index.html; location ^~ /sub/ { set $subroot /home/peaksite/public/; alias $subroot; if ( !-e $request_filename) { rewrite ^/sub/(.*)$ /sub/index.php/$1 last; break; } location ~ \.php { fastcgi_pass 127.0.0.1:9000; set $scriptname ''; set $pathinfo ''; if ( $uri ~ ^/sub/(.+\.php)($|/.+) ) { set $scriptname $1; set $pathinfo $2; } fastcgi_param SCRIPT_FILENAME $subroot/$scriptname; fastcgi_index index.php?IF_REWRITE=1; fastcgi_param PATH_INFO $pathinfo; fastcgi_param SCRIPT_FILENAME $subroot/$scriptname; include fastcgi_params; } } }