www.gusucode.com > Carbon Forum PHP轻论坛系统 v3.6.5源码程序 > Carbon-Forum-3.6.5/sitemap.php
<?php include(__DIR__ . '/common.php'); header("Content-Type: text/xml"); $Action = Request('POST','action',false); $Page = intval($_GET['page']); $CurHost = 'http://' . $_SERVER['HTTP_HOST'].$Config['WebsitePath']; $ItemPerSitemap = 30000; /* Google crawlers https://support.google.com/webmasters/answer/1061943?hl=en Baidu crawlers http://help.baidu.com/question?prod_en=master&class=498&id=1000973 */ $IsGoogleBot = false; $IsBaiduBot = false; if ($UserAgent) { $IsGoogleBot = preg_match('/(googlebot|mediapartners-google|adsbot-google)/i', $UserAgent); $IsBaiduBot = preg_match('/(baiduspider)/i', $UserAgent); } $XMLNameSpace = ''; if($IsGoogleBot){ $XMLNameSpace = ' xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0"'; }elseif ($IsBaiduBot) { $XMLNameSpace = ' xmlns:mobile="http://www.baidu.com/schemas/sitemap-mobile/1/"'; } ob_start(); echo '<?xml version="1.0" encoding="UTF-8" ?> '; $MobileTag = ''; if($_SERVER['HTTP_HOST'] == $Config['MobileDomainName']) { if($IsGoogleBot){ /* Add mobile URL information to a Sitemap //https://support.google.com/webmasters/answer/34648?hl=en */ $MobileTag = '<mobile:mobile/>'; }elseif ($IsBaiduBot) { $MobileTag = '<mobile:mobile type="mobile"/>'; } } switch ($Action) { case 'topics': ?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"<?php echo $XMLNameSpace; ?>> <?php if($Page==1){ ?> <url> <loc><?php echo $CurHost.'/'; ?></loc> <?php echo $MobileTag; ?> <lastmod><?php echo date("Y-m-d", $TimeStamp); ?></lastmod> <priority>1.0</priority> <?php if ($IsBaiduBot && $_SERVER['HTTP_HOST'] != $Config['MobileDomainName']) { ?> <data> <display> <html5_url>http://<?php echo $Config['MobileDomainName']; ?></html5_url> </display> </data> <?php } ?> </url> <?php } $TopicsArray = $DB->query('SELECT `ID`, `LastTime`, `Replies` FROM '.$Prefix.'topics force index(LastTime) WHERE IsDel=0 ORDER BY LastTime DESC LIMIT '.($Page-1)*$ItemPerSitemap.','.$ItemPerSitemap); foreach ($TopicsArray as $Topic) {?> <url> <loc><?php echo $CurHost.'/t/'.$Topic['ID']; ?></loc> <?php echo $MobileTag; ?> <lastmod><?php echo date("Y-m-d", $Topic['LastTime']); ?></lastmod> <priority>0.<?php echo $Topic['Replies']>=70?'8':ceil(($Topic['Replies']+10)/10); ?></priority> <?php if ($IsBaiduBot && $_SERVER['HTTP_HOST'] != $Config['MobileDomainName']) { ?> <data> <display> <html5_url>http://<?php echo $Config['MobileDomainName'].'/t/'.$Topic['ID']; ?></html5_url> </display> </data> <?php } ?> </url> <?php } ?> </urlset> <?php break; case 'pages': ?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"<?php echo $XMLNameSpace; ?>> <?php $TotalPages = ceil($Config['NumTopics']/$Config['TopicsPerPage']); if((($Page-1)*$ItemPerSitemap) <= $TotalPages){ for($i = ($Page-1)*$ItemPerSitemap+1; $i <= $Page*$ItemPerSitemap && $i <= $TotalPages ; $i++) {?> <url> <loc><?php echo $CurHost.'/page/'.$i; ?></loc> <?php echo $MobileTag; ?> <priority>0.3</priority> <?php if ($IsBaiduBot && $_SERVER['HTTP_HOST'] != $Config['MobileDomainName']) { ?> <data> <display> <html5_url>http://<?php echo $Config['MobileDomainName'].'/page/'.$i; ?></html5_url> </display> </data> <?php } ?> </url> <?php } } ?> </urlset> <?php break; case 'tags': ?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"<?php echo $XMLNameSpace; ?>> <?php $TagsArray = $DB->query('SELECT `Name`, `MostRecentPostTime`, `TotalPosts` FROM '.$Prefix.'tags force index(PRI) ORDER BY ID DESC LIMIT '.($Page-1)*$ItemPerSitemap.','.$ItemPerSitemap); foreach ($TagsArray as $Tags) {?> <url> <loc><?php echo $CurHost.'/tag/'.urlencode($Tags['Name']); ?></loc> <?php echo $MobileTag; ?> <lastmod><?php echo date("Y-m-d", $Tags['MostRecentPostTime']); ?></lastmod> <priority>0.<?php echo $Tags['TotalPosts']>=50?'6':ceil(($Tags['TotalPosts']+10)/10); ?></priority> <?php if ($IsBaiduBot && $_SERVER['HTTP_HOST'] != $Config['MobileDomainName']) { ?> <data> <display> <html5_url>http://<?php echo $Config['MobileDomainName'].'/tag/'.urlencode($Tags['Name']); ?></html5_url> </display> </data> <?php } ?> </url> <?php } ?> </urlset> <?php break; case 'users': ?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"<?php echo $XMLNameSpace; ?>> <?php $UsersArray = $DB->query('SELECT `UserName`, `Topics`, `Replies`, `LastPostTime` FROM '.$Prefix.'users force index(PRI) WHERE UserAccountStatus=1 ORDER BY ID DESC LIMIT '.($Page-1)*$ItemPerSitemap.','.$ItemPerSitemap); foreach ($UsersArray as $User) {?> <url> <loc><?php echo $CurHost.'/u/'.urlencode($User['UserName']); ?></loc> <?php echo $MobileTag; ?> <lastmod><?php echo date("Y-m-d", $User['LastPostTime']); ?></lastmod> <priority>0.<?php echo $User['Topics']+$User['Replies']>=40?'5':ceil(($User['Topics']+$User['Replies'])/10); ?></priority> <?php if ($IsBaiduBot && $_SERVER['HTTP_HOST'] != $Config['MobileDomainName']) { ?> <data> <display> <html5_url>http://<?php echo $Config['MobileDomainName'].'/u/'.urlencode($User['UserName']); ?></html5_url> </display> </data> <?php } ?> </url> <?php } ?> </urlset> <?php break; default: ?> <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <?php //帖子 for($i = 1; $i <= ceil($Config['NumTopics']/$ItemPerSitemap); $i++) echo '<sitemap><loc>',$CurHost,'/sitemap-topics-',$i,".xml</loc></sitemap>\n"; //帖子页 for($i = 1; $i <= ceil(ceil($Config['NumTopics']/$Config['TopicsPerPage'])/$ItemPerSitemap); $i++) echo '<sitemap><loc>',$CurHost,'/sitemap-pages-',$i,".xml</loc></sitemap>\n"; //话题 for($i = 1; $i <= ceil($Config['NumTags']/$ItemPerSitemap); $i++) echo '<sitemap><loc>',$CurHost,'/sitemap-tags-',$i,".xml</loc></sitemap>\n"; //用户 for($i = 1; $i <= ceil($Config['NumUsers']/$ItemPerSitemap); $i++) echo '<sitemap><loc>',$CurHost,'/sitemap-users-',$i,".xml</loc></sitemap>\n"; ?> </sitemapindex><?php break; } ob_end_flush(); ?>