Cursor 是基于 AI 的代码编辑器,需用自然语言提问才能生成 ThinkPHP 6 的 Nginx 伪静态规则;推荐配置为 location / { try_files $uri $uri/ /index.php?$query_string; } 并正确设置 fastcgi_param SCRIPT_FILENAME。

Cursor 本身不直接生成 Nginx 伪静态规则,它是一个基于 AI 的代码编辑器(底层用 LLM 辅助编码),你需要用自然语言向它提问,让它帮你写出符合 ThinkPHP 路由规范的 Nginx 配置片段。
明确 ThinkPHP 的伪静态需求
ThinkPHP 默认使用 PATH_INFO 模式(如 /index.php/home/index),开启 URL 重写后可支持无 index.php 的访问(如 /home/index)。Nginx 无法原生支持 PATH_INFO,需通过 fastcgi_split_path_info 或重写规则模拟。
关键点:
- 入口文件固定为
public/index.php(推荐 ThinkPHP 6+ 标准结构) - 所有非静态资源请求都应转发给
index.php - 需排除真实存在的静态文件(.js、.css、.png 等)
- 避免循环重写或 404
在 Cursor 中高效提问的写法
不要只说“生成伪静态”,要给出上下文。例如,在 Cursor 的聊天框中输入:
“我用 ThinkPHP 6,项目根目录下有 public/ 子目录,入口是 public/index.php。Nginx 配置已指向 public/ 目录。请帮我写一段 location 块规则:让 /admin/user/list 这样的 URL 正确路由到 index.php,同时跳过真实存在的 .js、.css、.jpg 等静态文件。”这样 Cursor 更容易输出精准、可直接粘贴的配置。
推荐的 Nginx 规则(可直接用)
将以下内容放入你的 server 块中(确保 root 已设为 your_project_path/public):
location / {
try_files $uri $uri/ /index.php?$query_string;
}
<p>location ~ .php$ {
fastcgi_pass 127.0.0.1:9000; # 或 unix:/var/run/php/php8.1-fpm.sock
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}</p>
说明:
-
try_files $uri $uri/ /index.php?$query_string是核心:先找真实文件/目录,找不到就交给 index.php 处理,并透传查询参数 - 不需要额外 rewrite —— ThinkPHP 会自动从
REQUEST_URI解析路由 -
fastcgi_param SCRIPT_FILENAME必须用$document_root(不是$realpath_root),否则路径可能出错
验证与调试小技巧
改完 Nginx 后记得:
- 执行
sudo nginx -t检查语法 - 重启:
sudo systemctl reload nginx - 在 ThinkPHP 中临时加一行
dump($_SERVER['REQUEST_URI']);看是否拿到原始路径(如/user/profile而不是/index.php/user/profile) - 如果报 500,检查 PHP 错误日志,常见原因是
SCRIPT_FILENAME指向了不存在的路径
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











