PHP还原短链接需用cURL禁用自动跳转并解析Location响应头;生成则依赖Bitly等API或自建系统;file_get_contents因默认跟随重定向且不返回响应头而不适用。
PHP 本身不提供短链接还原或生成的内置功能,所有操作都依赖外部服务(如 Bitly、TinyURL)或自建逻辑。直接用 PHP “还原短链接” 实际上就是发起一次 HTTP 请求获取重定向目标地址;而“生成新短链接”必须调用 API 或写数据库映射 + 自定义路由。
短链接本质是 301/302 重定向,还原的关键是**不跟随跳转**,只读取 Location 响应头。用 curl 最可靠,file_get_contents 默认会跟随跳转,不能直接用。
CURLOPT_FOLLOWLOCATION 为 false
CURLOPT_HEADER 为 true 才能捕获响应头curl_getinfo($ch, CURLINFO_REDIRECT_URL) 在某些情况下返回空,优先解析 Location 头function resolveShortUrl($shortUrl) {
$ch = curl_init($shortUrl);
curl_setopt_array($ch, [
CURLOPT_NOBODY => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_HEADER => true,
CURLOPT_TIMEOUT => 5,
CURLOPT_USERAGENT => 'Mozilla/5.0'
]);
$response = curl_exec($ch);
$headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$headers = substr($response, 0, $headerSize);
curl_close($ch);
if (preg_match('/Location:\s*(.+)/i', $headers, $matches)) {
return trim($matches[1]);
}
return null;
}
// 示例
$realUrl = resolveShortUrl('https://t.co/abc123');
echo $realUrl; // 输出类似 https://example.com/post?id=42
file_get_contents 默认行为是自动跟随全部重定向(最多 20 次),最终返回的是最终页面内容,不是跳转链路本身。你得不到中间的 Location,也就无法还原原始跳转目标。
stre
am_context_create(['http' => ['follow_location' => false]]),PHP 7.4+ 才支持该选项,且部分版本仍不可靠Location
curl 更可控自建短链系统要处理域名、路由、存储、防刷、统计,成本高。用 Bitly 是最省事的选择,只需一个 access_token 和两行请求。
ACCESS_TOKEN(在 API Settings 页面)Authorization: Bearer YOUR_TOKEN
link 字段就是新短链接$longUrl = 'https://example.com/report?date=2025-06&user=789';
$token = 'YOUR_ACCESS_TOKEN';
$data = json_encode(['long_url' => $longUrl]);
$ch = curl_init('https://api-ssl.bitly.com/v4/shorten');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer ' . $token
],
CURLOPT_RETURNTRANSFER => true
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
if (isset($response['link'])) {
echo $response['link']; // e.g. https://bit.ly/3xYzAbC
}
生成的短链接被点击后,目标页拿到的 $_SERVER['HTTP_REFERER'] 是短链域名(如 bit.ly),不是用户原始来源。如果业务依赖来源分析,得在长 URL 中显式携带参数,例如:
utm_source=wechat 写进原始 URL 再压缩:https://example.com/?ref=wechat
window.location.href=...),iOS 微信中可能丢失 Referer真正麻烦的从来不是“怎么生成一个短链接”,而是“生成之后怎么追踪、怎么防滥用、怎么确保在所有 App 内都能正常跳转”。别低估微信、飞书、钉钉对 URL 的拦截策略——有时候连 http:// 都会被自动禁用,强制走 HTTPS。
# php
# js
# json
# 微信
# 浏览器
# app
# access
# ssl
# curl
# ios
# 路由
# 飞书
# win
# stream
相关文章:
如何通过虚拟主机空间快速建站?
如何通过智能用户系统一键生成高效建站方案?
网站企业制作流程,用什么语言做企业网站比较好?
如何在Golang中使用encoding/gob序列化对象_存储和传输数据
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
如何在建站之星绑定自定义域名?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
建站之星备案是否影响网站上线时间?
如何快速搭建高效简练网站?
如何高效配置IIS服务器搭建网站?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
建站之星如何通过成品分离优化网站效率?
如何在香港服务器上快速搭建免备案网站?
如何选择可靠的免备案建站服务器?
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
个人摄影网站制作流程,摄影爱好者都去什么网站?
常州企业网站制作公司,全国继续教育网怎么登录?
如何用美橙互联一键搭建多站合一网站?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
网站设计制作公司地址,网站建设比较好的公司都有哪些?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
网站设计制作企业有哪些,抖音官网主页怎么设置?
营销式网站制作方案,销售哪个网站招聘效果最好?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
如何在腾讯云免费申请建站?
如何用IIS7快速搭建并优化网站站点?
如何彻底卸载建站之星软件?
如何确保西部建站助手FTP传输的安全性?
如何通过云梦建站系统实现SEO快速优化?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
开封网站制作公司,网络用语开封是什么意思?
建站之星与建站宝盒如何选择最佳方案?
建站之星各版本价格是多少?
海南网站制作公司有哪些,海口网是哪家的?
专业网站制作服务公司,有哪些网站可以免费发布招聘信息?
css网站制作参考文献有哪些,易聊怎么注册?
建站之星导航配置指南:自助建站与SEO优化全解析
建站主机选购指南:核心配置优化与品牌推荐方案
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
建站之星如何保障用户数据免受黑客入侵?
已有域名如何免费搭建网站?
建站VPS推荐:2025年高性能服务器配置指南
如何用PHP快速搭建高效网站?分步指南
如何解决VPS建站LNMP环境配置常见问题?
Bpmn 2.0的XML文件怎么画流程图
C++用Dijkstra(迪杰斯特拉)算法求最短路径
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
如何有效防御Web建站篡改攻击?
*请认真填写需求信息,我们会在24小时内与您取得联系。