𝕷𝖎𝖑𝖏𝖆𝖈𝖐 发表于 2025-4-29 16:10:10

分享下bing的indexnow通用php版sitemap提交

研究了一个晚上,大家拿去用吧。帝国cms 易优 等php程序都可以用,


<?php// ========== 配置项 ==========$host = 'www.domain.com'; // 替换为你的域名$apiKey = '你的apikey'; // 替换为你的 Bing IndexNow API Key$logFile = '/www/wwwroot/domain/indexnow_push.log'; // 日志路径(可自定义)// 多个 sitemap 地址(根据你的实际数量增减)$sitemapUrls = [    '你的网址/sitemap/news_6.xml',    '你的网址/sitemap/news_5.xml',    '你的网址/sitemap/news_4.xml',    '你的网址/sitemap/news_3.xml',    '你的网址/sitemap/news_2.xml',    '你的网址/sitemap/news_1.xml',    // 添加更多...];echo "🌐 正在准备解析多个 sitemap 文件...\n";$urlList = [];foreach ($sitemapUrls as $sitemapUrl) {    echo "📥 正在下载 sitemap: $sitemapUrl\n";    $xmlContent = @file_get_contents($sitemapUrl);    if (!$xmlContent) {      echo "⚠️ 无法获取 sitemap 内容: $sitemapUrl\n";      continue;    }    $xml = simplexml_load_string($xmlContent);    if (!$xml) {      echo "⚠️ 无法解析 XML 内容: $sitemapUrl\n";      continue;    }    foreach ($xml->url as $url) {      $loc = (string)$url->loc;      if (filter_var($loc, FILTER_VALIDATE_URL)) {            $urlList[] = $loc;      }    }}if (empty($urlList)) {    echo "⚠️ 没有解析到任何有效的 URL。\n";    file_put_contents($logFile, date("Y-m-d H:i:s") . " - ⚠️ 没有解析到任何有效的 URL。\n", FILE_APPEND);    exit;}echo "✅ 共解析到 " . count($urlList) . " 条链接,开始去重...\n";// ========== 去重 & 分批推送(IndexNow 每次最多 10000)==========$uniqueUrls = array_values(array_unique($urlList));$chunks = array_chunk($uniqueUrls, 10000); // 每批最多 10000 条$totalPushed = 0;foreach ($chunks as $index => $chunk) {    echo "📤 正在推送第 " . ($index + 1) . " 批 (" . count($chunk) . " 条)...\n";    $payload = [      'host' => $host,      'key' => $apiKey,      'urlList' => $chunk    ];    $ch = curl_init('https://api.indexnow.org/indexnow');    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    curl_setopt($ch, CURLOPT_POST, true);    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));    curl_setopt($ch, CURLOPT_HTTPHEADER, [      'Content-Type: application/json'    ]);    $response = curl_exec($ch);    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);    curl_close($ch);    echo "📡 HTTP 状态码: $httpCode\n";    echo "📦 响应内容: $response\n";    $totalPushed += count($chunk);    // 记录日志    $logMsg = sprintf(      "批次: %d | 数量: %d | HTTP状态: %d | 响应: %s\n",      $index + 1,      count($chunk),      $httpCode,      $response    );    file_put_contents($logFile, date("Y-m-d H:i:s") . " - " . $logMsg, FILE_APPEND);}echo "🎉 推送完成,共推送 {$totalPushed} 条链接。\n";

浅生 发表于 2025-4-29 16:10:24

辛苦了老坛

Crystαl 发表于 2025-4-29 16:11:09

辛苦辛苦!

独家记忆 发表于 2025-4-29 16:11:53

感谢分享

拾光 发表于 2025-4-29 16:12:42

这个厉害了
页: [1]
查看完整版本: 分享下bing的indexnow通用php版sitemap提交