Pathinfo 模式是一种 URL 重写方式,常用于 PHP 框架(如 ThinkPHP、Laravel 等),它允许通过 /index.php/controller/action
这样的 URL 形式访问应用。
在 Nginx 中配置 Pathinfo 模式需要修改 server 块配置:
server {
listen 80;
server_name example.com;
root /path/to/your/project;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php($|/) {
fastcgi_pass 127.0.0.1:9000; # 根据你的 PHP-FPM 配置调整
fastcgi_index index.php;
# 关键 Pathinfo 配置
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
核心指令:
fastcgi_split_path_info
:将路径分割为脚本名和路径信息两部分fastcgi_param PATH_INFO
:设置 PATH_INFO 参数常见问题解决:
SCRIPT_FILENAME
是否正确指向 PHP 文件cgi.fix_pathinfo=1
(默认值)ThinkPHP 专用配置:
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
location / {
try_files $uri $uri/ /index.php?$query_string;
}
启用 pathinfo 可能存在安全风险,建议:
配置完成后,记得测试并重载 Nginx 配置:
nginx -t && nginx -s reload