phpenv 中一个站点配多个域名本质是修改 nginx 的 server_name 指令,同一 server 块内用空格分隔多个域名;需编辑 vhost 目录下对应 .conf 文件,确保 hosts 解析正确、root 路径无误、php 代码信任新域名。

phpEnv 里一个站点配多个域名,本质是改 Nginx server_name
phpEnv 是基于 Nginx + PHP-FPM 的集成环境,不走 Apache 的 VirtualHost 路线。它默认把每个“站点”映射为一个独立的 Nginx server 块,而多域名支持就藏在 server_name 指令里——不是加多个 server,而是在同一个 server 块里写多个域名。
常见错误是:以为要为每个域名建一个新站点,结果 phpEnv 后台里点了好几次“添加站点”,目录重复、端口冲突、重载失败。
-
server_name后面可以跟空格分隔的多个域名,比如server_name site.test www.site.test api.site.test; - 所有域名必须解析到本地(靠修改
/etc/hosts或C:\Windows\System32\drivers\etc\hosts) - 不能带
http://、不能带端口、不能有中文或下划线 - 如果用了泛域名(如
*.test),需确认 phpEnv 版本 ≥ 3.0.2,旧版不支持通配符语法
怎么找到并编辑 phpEnv 的站点 Nginx 配置文件
phpEnv 的站点配置不通过图形界面直接生成,而是存放在安装目录下的 vhost 文件夹里,文件名通常对应你添加站点时填的“域名”或“站点名”。例如你建了个叫 myapp 的站点,配置文件大概率是 phpenv\vhost\myapp.conf。
别用 phpEnv 自带的“站点管理”面板去“绑定别名”——那个功能实际只是改了根目录路径,不会动 server_name。
- 关闭 phpEnv 主程序(右键托盘图标 → 退出),否则配置文件可能被锁住
- 用管理员权限打开配置文件,定位到
server { ... }块 - 找到已有
server_name行,在末尾追加空格+新域名,例如从server_name myapp.test;改成server_name myapp.test admin.myapp.test api.myapp.test; - 保存后,重新启动 phpEnv,再点“重载 Nginx”(不是重启)
改完访问 404 或跳转到默认站?检查这三点
多域名配完却打不开,90% 出在这三个地方,而不是 PHP 代码问题。
-
hosts文件里没加对应行,或者格式错:比如用了 tab 而不是空格,或多写了127.0.0.1两次 - Nginx 配置里
root路径写死了绝对路径但拼错了,例如root "D:/www/myapp";实际目录是D:\www\myapp\(反斜杠在 Nginx 里要双写或全换斜杠) - PHP 项目本身依赖
$_SERVER['HTTP_HOST']做路由或 CDN 判断,但你加的别名没被信任——得在 PHP 里白名单校验,比如:in_array($_SERVER['HTTP_HOST'], ['myapp.test', 'admin.myapp.test'])
phpEnv 不支持运行时动态别名,别碰 .htaccess 或 index.php 重写
有人试过在 PHP 入口里用 header('Location: ...') 或 Nginx 的 rewrite 把请求“转发”到另一个域名,这属于绕路。phpEnv 的 Nginx 是静态配置型,所有域名必须在 server_name 里显式声明,否则连请求都进不到 PHP 层——Nginx 会直接返回 404 或 fallback 到第一个匹配的 server 块。
真正需要“动态别名”的场景(比如 SaaS 多租户),得配合 DNS 泛解析 + Nginx 的 map 指令做变量映射,但这已超出 phpEnv 默认能力范围,需要手动改主配置 nginx.conf 并引入自定义逻辑。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











