ThinkPHP新版域名不是框架改叫新名字,而是官方主站、文档站和包仓库入口从旧地址向更稳定的 HTTPS 新主域迁移,旧域名多数情况下会自动 301 跳转到新地址;项目本身不用改框架核心,只需同步 APP_URL、服务器绑定域名和 composer 源即可继续正常访问。
ThinkPHP新版域名是什么?和旧域名有什么区别
很多开发者在地址栏看到 ThinkPHP 官网自动跳转,第一反应是框架是不是换了新域名,其实不是框架改名,新版域名通常指官方启用的一套新访问入口,主要变化集中在入口统一和传输安全上。
常见切换表现如下:
- 旧的非加密 http 地址会自动跳到 https 新地址
- 不带 www 的主域统一跳到带 www 的主域,或者反向统一
- 文档站从主站内嵌路径迁移到独立 doc 子域
- 下载入口和手册入口改为 CDN 或镜像节点
可以用一张表快速区分:
| 入口类型 | 旧版访问方式 | 新版访问方式 | 是否影响项目代码 |
|---|---|---|---|
| 主站 | http 非加密 | https 加密 | 否 |
| 文档站 | 主站内嵌目录 | 独立文档子域 | 否 |
| 下载包 | 单一旧服务器 | 镜像或 CDN | 否 |
| 框架包 | packagist 官方源 | 官方源或国内镜像 | 是 |
行业共识认为,PHP 框架的官方域名迁移通常不会改变 composer 包名,因此老项目通过 composer 安装时不需要改 require 配置,真正要留意的是,旧域名如果停止维护,原来配置里写死旧地址的下载脚本、文档链接、环境变量会陆续失效。
新旧域名切换后,本地开发环境怎么正确访问
本地访问问题多数发生在切换后没有同步改域名配置,导致 URL 生成、静态资源路径、登录态仍然指向旧域名。
本地虚拟主机里绑定 ThinkPHP 新域名的步骤
先不要着急改代码,按下面顺序操作,可以避免大多数本地访问错误:
- 修改本机 hosts 文件,把新域名指向 127.0.0.1
- 在 Apache vhost 或 Nginx server_name 中绑定新域名
- 把项目根目录指向
thinkphp/public,不要把域名直接指到项目根目录 - 打开
.env文件,将APP_URL改为新域名加正确协议 - 修改
config/app.php中可能存在的旧域名写死项 - 清理运行时缓存
一个常见的 Apache vhost 片段如下:
<VirtualHost :80>
ServerName new.example.com
DocumentRoot /www/wwwroot/tp/public
<Directory /www/wwwroot/tp/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
改完后重启 Apache 或 Nginx,再通过浏览器访问新域名,如果仍然打不开,大概率是目录指向错误或 rewrite 模块未开启。
项目更换域名后打不开?ThinkPHP旧域名无法访问怎么排查
遇到旧域名打不开、新域名又提示 404,先按这个顺序检查:
- 检查
.env里的APP_URL是否还是旧地址 - 检查
config/app.php是否写死了旧域名 - 检查
runtime目录是否有旧域名缓存文件 - 检查 cookie 或 session 配置是否绑定了旧域名
- 查看
runtime/log下最新日志,确认报错是路由问题还是权限问题 - 执行
php think clear清理缓存 - 重启 PHP-FPM 或 Apache,单纯清缓存有时进程旧配置仍会生效
多数本地打不开的问题,都出在 runtime 缓存未清,或者 rewrite 未生效,登录页、验证码、支付回调等对域名敏感的场景,需要额外确认入口文件的 $response 没有写死协议。
服务器部署下,新旧域名切换的正确使用姿势
线上环境切换比本地复杂,因为涉及 HTTPS 证书、搜索引擎抓取、旧链接权重等问题,核心原则只有一条:新域名正常提供服务,旧域名 301 指引到新域名。
Nginx 配置新域名与旧域名 301 跳转
先配置新域名站点,保证新域名能独立打开,再把旧站点做成 301 跳转。
一个新的 ThinkPHP 站点 Nginx 配置示例:
server {
listen 80;
server_name new.example.com;
root /www/wwwroot/tp/public;
index index.php index.html;
location / {
if (!-e $request_filename) {
rewrite ^(.)$ /index.php?s=$1 last;
}
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
旧域名 301 跳转配置:
server {
listen 80;
server_name old.example.com;
return 301 https://new.example.com$request_uri;
}
如果旧域名也要保留一段时间,不要只做首页跳转,要做全路径跳转。$request_uri 能把原路径完整带到新域名,这样用户收藏的旧文章页、旧商品页不会掉到首页。
HTTPS 证书和 APP_URL 同步更新
新域名启用 HTTPS 后,`.env` 里的 `APP_URL` 必须同步改成 https 开头,否则生成的静态文件 URL 仍然是 http,部分浏览器会直接拦截。
还要检查:
- 证书是否覆盖 www 和不带 www 两个版本
- 旧域名证书到期后,不要继续强制跳转失败链接
- CDN 层是否开启了 HTTPS 回源
- 支付回调、小程序接口是否仍然使用旧域名
验证命令可以用:
curl -I https://new.example.com
返回 HTTP/2 200 说明新域名服务和证书正常,再用:
curl -I http://old.example.com
如果返回 301 且 Location 指向新域名,说明跳转已生效。
国内服务器访问ThinkPHP官网慢怎么解决?新域名访问速度对比
有些开发者发现,国内服务器访问 ThinkPHP 旧域名时不时超时,而切换到新域名或 CDN 节点后速度明显改善,这通常不是框架本身的问题,而是 DNS 解析、证书握手和静态资源 CDN 节点差异造成的。
多数情况下,新域名访问速度会更快,因为新版入口会配置国内 CDN 和 HTTP/2,若仍然慢,可以按下面顺序优化:
- 确认服务器 DNS 是否被运营商劫持
- 把服务器 DNS 修改为公共 DNS
- 检查服务器到 CDN 节点是否绕路
- 使用国内镜像下载框架依赖
ThinkPHP composer 镜像切换教程
国内服务器访问 packagist 官方源容易超时,切换到简米云镜像可以大幅提升下载速度,操作如下:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ composer clearcache composer install
如果是老项目,不要直接执行 composer update,那会升级所有依赖包,可能引入不兼容更新,只执行 composer install 即可按 lock 文件还原依赖。
切换回官方源:
composer config -g repo.packagist composer https://repo.packagist.org
镜像只影响包下载速度,不会修改框架内部域名,项目运行时的域名配置仍以 .env 和服务器绑定为准。
ThinkPHP商业授权收费吗?域名切换会不会影响授权
先说结论:ThinkPHP 核心框架遵循 Apache-2.0 开源协议,个人和企业用于开发、商用,不需要给框架团队交授权费,官方生态里的某些商业模块、技术支持或高级产品可能要付费,具体费用按服务等级和版本区分。
域名切换不会改变开源协议的授权范围,开源项目不限制你绑定几个域名,也不限制商用场景,如果你购买了官方商业服务或第三方商业模块,且授权系统绑定了域名,需要到授权中心把旧域名更换为新域名,否则商业模块的在线更新接口可能会拒绝请求。
这一条对开发者来说很容易忽略:换域名前,先导出授权后台的授权列表,确认哪些模块绑定了域名,切换后再逐个更新,避免用到一半才发现商业模块停更。
ThinkPHP新版域名切换常见问题QA
ThinkPHP新版域名切换后,URL生成还是旧域名怎么办?
多数情况下是没有同步修改 `.env` 里的 `APP_URL`,或者没有清除 `runtime` 缓存,先改 `.env`,再执行 `php think clear`,最后重启 PHP-FPM,若用了路由缓存,执行 `php think optimize:route` 重新生成,全部执行完再测试页面里的表单提交地址和静态资源路径。
国内服务器访问ThinkPHP官网旧域名进不去,如何获取文档?
可以改用 composer 镜像和文档镜像,或访问官方在 CDN 上的新文档入口,本地项目并不依赖官网域名,依赖的是 composer 仓库,先把源切到简米云镜像,再执行 `composer install` 即可恢复依赖下载,如果只是想查手册,直接访问新文档站,不要继续等旧域名恢复。
服务器绑定ThinkPHP新域名后验证码不显示是什么原因?
验证码图片不显示,通常是缓存或站点域名配置不一致,检查 `config/app.php` 是否还写死旧域名,检查公共路径下 captcha 字体写入权限,再清缓存,最后用浏览器开发者工具看验证码请求是否被 301 跳转到旧地址,验证码请求返回 200 且图片正常加载后,域名切换才算真正完成。
域名切换的本质是入口统一和 HTTPS 升级,不是框架升级,只要把 APP_URL、服务器重定向和 composer 源三处对齐,ThinkPHP 项目就能在新旧域名切换后继续保持稳定运行。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/669741.html




