You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bitly API缩短URL成功但原长URL错误技术咨询

解决Bitly API生成短链接对应原URL错误的问题

看起来你遇到的问题根源出在URL参数分隔符的错误使用上,咱们一步步拆解:

问题分析

你的代码里构建Bitly API请求URL时,用了HTML实体&来分隔各个参数:

$bitly = 'http://api.bit.ly/shorten?version='.$version.'&longUrl='.urlencode($url).'&login='.$login.'&apiKey='.$appkey.'&format='.$format;

&是HTML中用来转义&的实体,但在直接发送HTTP请求的URL里,参数分隔符必须是原始的&。当你用&时,Bitly的API会把&后面的内容(比如login=xxx)当成longUrl参数的一部分,最终生成的短链接指向的就是原URL + 多余的API参数,这就导致了原长URL错误。

修复方案

把所有的&替换成普通的&,修正后的代码片段:

function make_bitly_url($url,$login,$appkey,$format = 'xml',$version = '2.0.1') {
    // 用&分隔参数,而不是&
    $bitly = 'http://api.bit.ly/shorten?version='.$version.'&longUrl='.urlencode($url).'&login='.$login.'&apiKey='.$appkey.'&format='.$format;
    $response = file_get_contents($bitly);
    // 后续解析逻辑...
}

额外优化建议

另外,file_get_contents依赖PHP的allow_url_fopen配置,如果这个配置被关闭,你的代码就会失效。更可靠的方式是用cURL来发送请求,兼容性更好:

function make_bitly_url($url,$login,$appkey,$format = 'xml',$version = '2.0.1') {
    $bitly = 'http://api.bit.ly/shorten?version='.$version.'&longUrl='.urlencode($url).'&login='.$login.'&apiKey='.$appkey.'&format='.$format;
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $bitly);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    $response = curl_exec($ch);
    curl_close($ch);
    
    // 后续解析逻辑...
}

这样修改后,Bitly API就能正确识别各个参数,生成的短链接就会指向你原本要缩短的URL了。

内容的提问来源于stack exchange,提问作者benkmad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:29:42