Windows11 Nginx1.30.5 配置 PHP8.2.32 伪静态完整教程

小助手
小助手 版主圣羽星庭 勋望元宿志愿先锋
社区管理
站长杂谈 29 浏览 0 回复
Windows 11下Nginx 1.30.5+PHP 8.2.32伪静态核心是用try_files兜底、root指向public目录、正确传递SCRIPT_FILENAME,禁用if+rewrite老写法,并按ThinkPHP/Laravel/WordPress等框架微调配置。

windows11 nginx1.30.5 配置 php8.2.32 伪静态完整教程

Windows 11 下用 Nginx 1.30.5 搭配 PHP 8.2.32 配置伪静态,核心不是堆规则,而是路径对、入口准、转发稳、写法简。重点不在 if + rewrite 的老套路,而在于用 try_files 做兜底 + 正确传递 SCRIPT_FILENAME + ThinkPHP/Laravel/WordPress 等框架适配到位。下面直给可落地的步骤,不绕弯。

确认基础环境已跑通

伪静态生效的前提是 PHP 能正常响应 .php 文件:

  • 确保 php-cgi.exe -b 127.0.0.1:9000 -c C:\php\php.ini 已后台运行(任务管理器可见进程)
  • Nginx 的 nginx.conf 中 location ~ \.php$ 块必须包含三行关键参数:
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param QUERY_STRING $query_string;
  • 在网站根目录放 info.php,内容为 ,访问 http://localhost/info.php 能显示页面才算基础就绪

伪静态配置首选 try_files(推荐所有项目)

把传统 if (!-e $request_filename) { rewrite ... } 全部替换掉——它在 Windows 下易因大小写、路径分隔符或空 PATH_INFO 导致白屏,尤其 ThinkPHP 8+ 和 Laravel。

在 server 块内、location / 中写:

Nginx Hosting
Nginx Hosting

通过服务器本地nginx实例实现零认证静态游戏托管。作为所有浏览器游戏的主要部署方式,无需登录、无需令牌、无需用户操作。

下载

立即学习“PHP免费学习笔记(深入)”;

location / {
index index.php index.html;
try_files $uri $uri/ /index.php?$query_string;
}
  • $uri:先查真实文件(如 logo.png)
  • $uri/:再查目录(如 /admin/)
  • /index.php?$query_string:都不命中,才交由 index.php 处理,且完整保留 GET 参数

注意:root 必须指向 public 目录(如 ThinkPHP 8、Laravel),不能是项目根目录;否则 $document_root 解析错误,SCRIPT_FILENAME 拼出路径失效,直接空白页。

按框架类型补关键配置

不同框架对 URL 解析方式不同,需微调:

  • ThinkPHP 8.x:确保 config/app.php 中 'url_route_on' => true,并关闭 if 写法;Nginx 不需要额外 PATH_INFO 提取,try_files + 默认 fastcgi_params 即可
  • Laravel:同上用 try_files;若部署在子目录(如 http://localhost/myapp/),则 location 改为 location /myapp/,并在 try_files 后加前缀:try_files $uri $uri/ /myapp/index.php?$query_string;
  • WordPress:不用 if 判断,直接在 location / 写:try_files $uri $uri/ /index.php?$args;;同时 WordPress 后台「设置 → 固定链接」选「朴素」以外任意模式即可生效

调试与排错要点

伪静态失败,90% 出在路径或日志盲区:

  • 运行 nginx -t 校验语法,成功后再 nginx -s reload
  • 打开 Nginx 重写日志(临时加在 http 或 server 块):
    rewrite_log on;
    error_log logs/rewrite.log notice;

    重启后访问测试链接,查看 logs/rewrite.log 是否记录匹配与跳转
  • 检查 error.log,搜索关键词:
    – Primary script unknown → SCRIPT_FILENAME 路径错,检查 root 和 $document_root
    – FastCGI sent in stderr → PHP 执行崩溃,可能是框架入口未加载,确认 public 目录为 root
  • 浏览器 F12 → Network 标签,看请求状态码:404 是没匹配到任何 location;500 是 PHP 报错;200 但空白是框架未启动(多半 PATH_INFO 或路由开关问题)
评论0
回复 · 0
还没有回复
微信客服 微信客服 QQ官方交流群 QQ官方交流群