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
相关文章:
建站之星如何优化SEO以实现高效排名?
高防服务器租用如何选择配置与防御等级?
如何在Tomcat中配置并部署网站项目?
如何制作一个表白网站视频,关于勇敢表白的小标题?
制作国外网站的软件,国外有哪些比较优质的网站推荐?
制作网站的软件免费下载,免费制作app哪个平台好?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
如何通过山东自助建站平台快速注册域名?
网站专业制作公司有哪些,做一个公司网站要多少钱?
建站之星如何通过成品分离优化网站效率?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
C++如何编写函数模板?(泛型编程入门)
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
如何通过智能用户系统一键生成高效建站方案?
linux top下的 minerd 木马清除方法
如何用低价快速搭建高质量网站?
建站主机选购指南:核心配置优化与品牌推荐方案
网站制作企业,网站的banner和导航栏是指什么?
已有域名如何快速搭建专属网站?
如何在香港服务器上快速搭建免备案网站?
SQL查询语句优化的实用方法总结
香港服务器建站指南:免备案优势与SEO优化技巧全解析
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
*服务器网站为何频现安全漏洞?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何设计高效校园网站?
如何选择最佳自助建站系统?快速指南解析优劣
建站主机默认首页配置指南:核心功能与访问路径优化
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
如何高效利用亚马逊云主机搭建企业网站?
nginx修改上传文件大小限制的方法
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
香港服务器租用费用高吗?如何避免常见误区?
宝塔建站助手安装配置与建站模板使用全流程解析
如何用景安虚拟主机手机版绑定域名建站?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
如何在万网ECS上快速搭建专属网站?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
如何在西部数码注册域名并快速搭建网站?
专业网站制作服务公司,有哪些网站可以免费发布招聘信息?
完全自定义免费建站平台:主题模板在线生成一站式服务
*请认真填写需求信息,我们会在24小时内与您取得联系。