生产Google Sitemap XML文件的PHP代码

php如何生成Google Sitemap XML文件:
<?php 
header('Content-type: application/xml; charset="GB2312"',true); 
$timezone    = "Asia/Shanghai";
date_default_timezone_set($timezone);

$website = "http://www.yipiantian.cn"; /* change this */ 
$page_root = "/usr/local/psa/home/vhosts/subdomains/my/httpdocs"; /* change this */ 


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

/* list of allowed directories */ 
$allow_dir[] = "about"; 
$allow_dir[] = "help"; 
$allow_dir[] = "case"; 
$allow_dir[] = "E-Marketing"; 

/* list of disallowed directories */ 
$disallow_dir[] = "system"; 
$disallow_dir[] = "ads"; 
$disallow_dir[] = "api"; 
$disallow_dir[] = "ask"; 
$disallow_dir[] = "category"; 
$disallow_dir[] = "comment"; 
$disallow_dir[] = "corpandresize"; 
$disallow_dir[] = "css"; 

/* list of disallowed file types */ 
$disallow_file[] = ".inc"; 
$disallow_file[] = ".old"; 
$disallow_file[] = ".save"; 
$disallow_file[] = ".txt"; 
$disallow_file[] = ".xml"; 
$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"; 
$disallow_file[] = ".php"; 
$disallow_file[] = ".sql"; 

/* 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"));?></lastmod> 
<changefreq><? echo utf8_encode($changefreq); ?></changefreq> 
<priority><? echo utf8_encode($priority); ?></priority> 
</url> 
<? 
} 
?> 
</urlset> 

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

制作过程说明: 

将以上代码复制到本地存为sitemap.asp或sitemap.php,上传到你的服务器网站的根目录下,运行一下就可以在你指定的目录中(建议最好是指定为根目录)自动生成一个sitemap.xml文件了。最后进入google提交页面:https://www.google.com/webmasters/sitemaps/login,有gmail的可以用gmail直接登录。登录后把生成的xml文件地址按步骤提交就可以了。注:你的网站如果增加了新的页面,可以在增加完后再运行一下sitemap.asp或sitemap.php,并再重新提交一下sitemap.xml文件,这样就可以保证sitemap.xml文件的不断更新了! 




=================================================================================================

<?PHP    
header('Content-type: application/xml; charset="utf-8"'?true);    
 ?>    
 <?PHP    
$website = "http://www.seosjz.com"; /* change this */    
$page_root = "F:\wwwroot\2009sjzseobg\wwwroot"; /* 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";    
$disallow_dir[] = "site"; 
$disallow_dir[] = "images";
$disallow_dir[] = "index_files";
$disallow_dir[] = "managerfiles"; 
$disallow_dir[] = "sitemap";
   
 /* 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"; 
$disallow_file[] = ".htm";
$disallow_file[] = ".php";   
$disallow_file[] = ".xml";
  
 /* 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">    
<?php    
foreach ($a as $file) {    
?>    
<url>    
<loc><?php echo utf8_encode($website.$file); ?></loc>    
<lastmod><?php 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><?php echo utf8_encode($changefreq); ?></changefreq>    
<priority><?php echo utf8_encode($priority); ?></priority>    
</url>    
<?php    
}    
?>    
</urlset> 



你可能感兴趣的:(PHP,xml,function,timezone,Google,File)