商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > phpEnv配置Nginx隐藏PHP后缀 phpEnv美化URL教程

phpEnv配置Nginx隐藏PHP后缀 phpEnv美化URL教程

  发布于2026-07-08 阅读(0)

扫一扫,手机访问

phpEnv 下给 Nginx 配隐藏 .php 后缀,说穿了就是让 /about 这样的请求自动映射到 /about.php,而不是扔给你一个 404。这跟 ThinkPHP 那种隐藏 index.php 的思路完全是两码事——前者是“按需补后缀”,后者是“强制兜底到入口文件”。所以直接拿 ThinkPHP 的 try_files $uri $uri/ /index.php?s=$uri 往上一套,肯定翻车。

phpEnv配置Nginx隐藏PHP后缀 phpEnv美化URL教程

nginx 配置里必须用 try_files $uri $uri/ $uri.php?$args

这是最简且可靠的方案,适用于 phpEnv 默认结构(网站根目录即 PHP 文件所在目录)。

  • $uri 先找真实文件——用户访问 /contact,Nginx 就去查有没有叫 contact(无后缀)的文件
  • $uri/ 再找同名目录,比如 /blog/ → 匹配 blog/ 目录
  • $uri.php?$args 最后 fallback 到 contact.php,并把原始查询参数(如 ?id=123)原样传过去
  • 注意:$is_args 不需要手写,?$args 已经自带逻辑——有参数才加 ?,没参数就只拼 .php

配置位置要写在 server 块内,而不是 location ~ \.php$ 里面:

location / {    try_files $uri $uri/ $uri.php?$args;}

别漏掉 PHP 处理块的 try_files 安全兜底

如果只改了 location /,但没动 PHP 处理块,可能会出现两种让人摸不着头脑的情况:

  • 访问 /admin.php 正常,但访问 /admin 却返回空白页(实际上是 200 + 空响应)
  • 某些路径下 PHP 脚本被当作静态文件下载,源码直接暴露

根本原因是:Nginx 在匹配 location ~ \.php$ 时,如果请求 URI 是 /admin,它根本不会进这个块——所以必须确保所有 PHP 执行都走统一入口,或者显式拦截。推荐加一层保护:

location ~* \.php$ {    try_files $uri =404;    fastcgi_pass 127.0.0.1:9000;    fastcgi_index index.php;    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;    include fastcgi_params;}

这行 try_files $uri =404 意味着:只有真实存在的 .php 文件才允许执行;否则直接 404,不给任何下载源码的机会。

phpEnv 的 nginx.conf 文件位置和重载方式

phpEnv 默认把站点配置放在 C:\phpEnv\nginx\vhosts\ 下,每个站点一个 conf 文件(比如 myapp.conf)。尽量不要去改主 nginx.conf,否则以后升级 phpEnv 会被覆盖掉。

  • 修改完配置后,用 phpEnv 控制面板点「重载 Nginx」,或者手动执行:C:\phpEnv\nginx\nginx.exe -s reload
  • 如果提示 nginx: [emerg] unknown directive "try_files",说明你用的是极老版本 Nginx(<1....),升级就好了
  • Windows 下路径分隔符用正斜杠 /,别用反斜杠 \$uri.php 中间不能有空格

真正的坑往往不在规则本身,而是改完没重载、重载失败没看日志、或者把配置塞进了错误的 location 块里。phpEnv 的 Nginx 日志默认在 C:\phpEnv\nginx\logs\error.log,出问题第一时间翻它,比猜配置管用得多。

本文转载于:https://www.php.cn/faq/2420628.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注