Dream Maker 老漂 不要有和人斗的心,你要赢的是你自己!

Google SiteMap 生成工具 (PHP & ASP)

参数说明:
$website--你的域名
$page_root--你的站点的绝对路径
$changefreq--更新时间单位 "always"(始终), "hourly"(小时), "daily"(天), "weekly"(星期), "monthly"(月), "yearly" "never"(从不)
$priority--更新频率
$allow_dir--允许列表的目录
$disallow_dir--禁止列表的目录
$disallow_file--禁止列表的文件类型

PHP版本

<?php
header('Content-type: application/xml; charset="GB2312"',true);
?>
<!--
@author
@version 0.2, 2005-06-06 17:40 PT
@status working
@update Aditya Naik,

@Licence: LGPL

-->
<?php
$website = "http://my.xxxxx.com"; /* change this */
$page_root = "/usr/local/psa/home/vhosts/subdomains/my/httpdocs";              /* change this */

/* maybe change this: */
$changefreq = "weekly"; //"always", "hourly", "daily", "weekly", "monthly", "yearly" and "never".
$priority = 0.8;
/* this sets the last modification date of all pages to the current date */
$last_modification = date("Y-m-d/TH:i:s") . substr(date("O"),0,3) . ":" . substr(date("O"),3);

/* list of allowed directories */
$allow_dir[] = "web";

/* list of disallowed directories */
$disallow_dir[] = "admin";
$disallow_dir[] = "_notes";

/* list of disallowed file types */
$disallow_file[] = ".inc";
$disallow_file[] = ".old";
$disallow_file[] = ".save";
$disallow_file[] = ".txt";
$disallow_file[] = ".js";
$disallow_file[] = "~";
$disallow_file[] = ".LCK";
$disallow_file[] = ".zip";
$disallow_file[] = ".ZIP";
$disallow_file[] = ".CSV";
$disallow_file[] = ".csv";
$disallow_file[] = ".css";
$disallow_file[] = ".class";
$disallow_file[] = ".jar";
$disallow_file[] = ".mno";
$disallow_file[] = ".bak";
$disallow_file[] = ".lck";
$disallow_file[] = ".BAK";

/* simple compare function: equals */
function ar_contains($key, $array) {
  foreach ($array as $val) {
       if ($key == $val) {
              return true;
       }
  }
  return false;
}

/* better compare function: contains */
function fl_contains($key, $array) {
  foreach ($array as $val) {
       $pos = strpos($key, $val);
       if ($pos === FALSE) continue;
       return true;
  }

  return false;
}

/* this function changes a substring($old_offset) of each array element to $offset */
function changeOffset($array, $old_offset, $offset) {
  $res = array();
  foreach ($array as $val) {
    $res[] = str_replace($old_offset, $offset, $val);
  }
  return $res;
}

/* this walks recursivly through all directories starting at page_root and
   adds all files that fits the filter criterias */
// taken from Lasse Dalegaard, http://php.net/opendir
function getFiles($directory, $directory_orig = "", $directory_offset="") {
   global $disallow_dir, $disallow_file, $allow_dir;

   if ($directory_orig == "") $directory_orig = $directory;

   if($dir = opendir($directory)) {
       // Create an array for all files found
       $tmp = Array();

       // Add the files
       while($file = readdir($dir)) {
                  // Make sure the file exists
                  if($file != "." && $file != ".." && $file[0] != '.' ) {
               // If it's a directiry, list all files within it
                        //echo "point1<br>";
             if(is_dir($directory . "/" . $file)) {
                              //echo "point2<br>";
                    $disallowed_abs = fl_contains($directory."/".$file, $disallow_dir); // handle directories with pathes
                            $disallowed = ar_contains($file, $disallow_dir); // handle directories only without pathes
                            $allowed_abs = fl_contains($directory."/".$file, $allow_dir);
                            $allowed = ar_contains($file, $allow_dir);
                            if ($disallowed || $disallowed_abs) continue;
                            if ($allowed_abs || $allowed){
                   $tmp2 = changeOffset(getFiles($directory . "/" . $file, $directory_orig, $directory_offset), $directory_orig, $directory_offset);
                   if(is_array($tmp2)) {
                       $tmp = array_merge($tmp, $tmp2);
                   }
                            }
                } else {  // files
                            if (fl_contains($file, $disallow_file)) continue;
                       array_push($tmp, str_replace($directory_orig, $directory_offset, $directory."/".$file));
                      }
                  }
       }

       // Finish off the function
       closedir($dir);
       return $tmp;
   }
}

$a = getFiles($page_root);

echo '<?xml version="1.0" encoding="UTF-8"?>';
?>

<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
<?
foreach ($a as $file) {
?>
   <url>
      <loc><? echo utf8_encode($website.$file); ?></loc>
      <lastmod><? echo utf8_encode(date("Y-m-d/TH:i:s", filectime($page_root.$file)). substr(date("O"),0,3) . ":" . substr(date("O"),3));?></lastmod>
      <changefreq><? echo utf8_encode($changefreq); ?></changefreq>
      <priority><? echo utf8_encode($priority); ?></priority>
   </url>
<?
}
?>
</urlset>

asp版

<%
' sitemap_gen.asp
' A simple script to automatically produce sitemaps for a webserver, in the Google Sitemap Protocol (GSP)
'
' www.1100do.cn/sitemap
' v0.2 released 5 june 2005 (Listing a directory tree recursively improvement)
'
' BSD 2.0 license,
' http://www.opensource.org/licenses/bsd-license.php
' 收集整理:       bighearted@126.com

session("server")="http://www.1100do.cn"                '你的域名
vDir = "/site"                                            '制作SiteMap的目录,相对目录(相对于根目录而言)

set objfso = CreateObject("Scripting.FileSystemObject")
root = Server.MapPath(vDir)

response.ContentType = "text/xml"
response.write "<?xml version='1.0' encoding='UTF-8'?>"
response.write "<urlset xmlns='http://www.google.com/schemas/sitemap/0.84'>"

Set objFolder = objFSO.GetFolder(root)
'response.write getfilelink(objFolder.Path,objFolder.dateLastModified)
Set colFiles = objFolder.Files
For Each objFile In colFiles
       response.write getfilelink(objFile.Path,objfile.dateLastModified)
Next
ShowSubFolders(objFolder)

response.write "</urlset>"
set fso = nothing

Sub ShowSubFolders(objFolder)
       Set colFolders = objFolder.SubFolders
       For Each objSubFolder In colFolders
              if folderpermission(objSubFolder.Path) then
                     response.write getfilelink(objSubFolder.Path,objSubFolder.dateLastModified)
                     Set colFiles = objSubFolder.Files
                     For Each objFile In colFiles
                            response.write getfilelink(objFile.Path,objFile.dateLastModified)
                     Next
                     ShowSubFolders(objSubFolder)
              end if
       Next
End Sub

Function getfilelink(file,datafile)
       file=replace(file,root,"")
       file=replace(file,"/","/")
       If FileExtensionIsBad(file) then Exit Function
       if month(datafile)<10 then filedatem="0"
       if day(datafile)<10 then filedated="0"
       filedate=year(datafile)&"-"&filedatem&month(datafile)&"-"&filedated&day(datafile)
       getfilelink = "<url><loc>"&server.htmlencode(session("server")&vDir&file)&"</loc><lastmod>"&filedate&"</lastmod><changefreq>daily</changefreq><priority>1.0</priority></url>"
       Response.Flush
End Function

Function Folderpermission(pathName)

       '需要过滤的目录(不列在SiteMap里面)
       PathExclusion=Array("/temp","/_vti_cnf","_vti_pvt","_vti_log","cgi-bin")
       Folderpermission =True
       for each PathExcluded in PathExclusion
              if instr(ucase(pathName),ucase(PathExcluded))>0 then
                     Folderpermission = False
                     exit for
              end if
       next
End Function

Function FileExtensionIsBad(sFileName)
       Dim sFileExtension, bFileExtensionIsValid, sFileExt
       'modify for your file extension (http://www.googleguide.com/file_type.html)
       Extensions = Array("png","gif","jpg","jpeg","zip","pdf","ps","html","htm","asp","php","wk1","wk2","wk3","wk4","wk5","wki","wks","wku","lwp","mw","xls","ppt","doc","swf","wks","wps","wdb","wri","rtf","ans","txt")
'设置列表的文件名,扩展名不在其中的话SiteMap则不会收录该扩展名的文件

       if len(trim(sFileName)) = 0 then
              FileExtensionIsBad = true
              Exit Function
       end if

       sFileExtension = right(sFileName, len(sFileName) - instrrev(sFileName, "."))
       bFileExtensionIsValid = false       'assume extension is bad
       for each sFileExt in extensions
              if ucase(sFileExt) = ucase(sFileExtension) then
                     bFileExtensionIsValid = True
                     exit for
              end if
       next
       FileExtensionIsBad = not bFileExtensionIsValid
End Function
%>

按要求设置好,分别保存成PHP或ASP文件
执行生成XML文件,传到服务器上,去
https://www.google.com/webmasters/sitemaps/login

登陆进去以后提交XML地址
 

Tags: sitemap

发布: 老漂 分类: 网站|站长 评论: 0 浏览: 90
留言列表
发表留言
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。