近期許多開發者遇到微信域名被封攔截的問題,急需實現自動跳轉到備用域名的技術方案。同時,騰訊最新規定要求在微信瀏覽器中打開的域名必須完成ICP備案,否則將直接攔截。本文將為您梳理應對策略。
核心邏輯是:在頁面加載時檢測當前域名是否被微信攔截,若被攔截則立即跳轉至備用域名。常見實現方式包括:
wx.error 回調或請求微信服務端接口檢測域名狀態,一旦發現被封,執行 window.location.href 跳轉。https://api.weixin.qq.com/cgi-bin/shorturl 或第三方檢測 API)輪詢域名狀態,將結果緩存,前端讀取後決定是否跳轉。<?php
function checkWechatBlock($domain) {
$url = "https://api.weixin.qq.com/cgi-bin/shorturl?access_token=YOUR_ACCESS_TOKEN";
$data = ['action' => 'long2short', 'long_url' => "https://{$domain}"];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
$res = json_decode($result, true);
// 若返回 errcode 為 40066 或 40118 等,通常表示域名被封
return isset($res['errcode']) && in_array($res['errcode'], [40066, 40118, 40119]);
}
?>
注意:需定期更新 access_token,且頻率不宜過高,建議緩存結果 10-30 分鐘。
自 2023 年起,微信強制要求業務域名完成 ICP 備案並綁定在公眾號/小程序後台。未備案域名將無法在微信內打開。建議:
採用「主動檢測 + 被動上報」雙重保障:前端 JS 實時檢測並上報異常,後端定時輪詢備份域名池。同時,引導用戶通過「複製鏈接到瀏覽器打開」或「收藏小程序」繞過攔截。
完整代碼與現成跳轉系統可參考開源項目 wechat-domain-check。