最精簡的Nginx配置
server { listen 80; server_name test.com; charset utf-8; location / { root E:/WWW/test; index index.php; if (!-e $request_filename) { #一定要用(.*)匹配整個URI,包含URI第一個字符反斜杠/ #rewrite ^(.*)$ /index.php?s=$1 last; rewrite ^/(.*)index.php(.*)$ $1/index.php?s=$2 last; break; } } location ~ \.php$ { root E:/WWW/test; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } }
關鍵就是,高級版的:
rewrite ^/(.*)index.php(.*)$ $1/index.php?s=$2 last;
1、精簡版的:PathInfo模式http://test.com/index.php/home/wendang/index,會報錯無法找到模板index.php,其他正常
2、高級版的:貌似這種,兼容模式http://test.com/home/wendang/index,會出現Not Found,其他正常
參考:nginx解決ThinkPHP PATHINFO不支持問題