<?php
// +----------------------------------------------------------------------+
// | HBcms系统：利用web服务器404状态跳转自动生成静态页                    |
// +----------------------------------------------------------------------+
// | This source file is released under the BSD License                   |
// +----------------------------------------------------------------------+
// | Copyright (c) 2006-2009 http://www.hbcms.com/ http://www.hbw.cn/     |
// +----------------------------------------------------------------------+
//
// $Id: 404.php,v 1.0 2007/05/29 12:19:30 aashley Exp $

// ############### 本程序私有函数 开始 ################
function getPhpUrl($my_url, $article_dir, $cms_dir)	{
	$php_url = '';
	// 分析原网页url
	if ( eregi('/' . $article_dir . '/',$my_url) && eregi('.html$',$my_url) )  {
		$basename_ary = explode('.',basename($my_url));
		$pg_ary = explode('_',$basename_ary[0]);
		$total_num = count($pg_ary);

		if ( $total_num == 1 && is_numeric($pg_ary[0]) )   {
			// 文章页面
			$php_url     = '/' . $cms_dir . '/php/article_detail.php?article_id=' . $pg_ary[0];
		} else if ( $total_num == 2 && is_numeric($pg_ary[0]) && is_numeric($pg_ary[1]) )   {
			// 列表页面
			$php_url     = '/' . $cms_dir . '/php/article_list.php?pageID=' . $pg_ary[1] . '&type_id=' . $pg_ary[0];
		} else if ( $total_num > 3 && eregi('/search_',$my_url) )   {
			// 搜索页面
			$php_url     = '/' . $cms_dir . '/php/search.php?id=' . $basename_ary[0];
		}
	}
	return $php_url;
}



function getPageUrl()	{
	// 获取原网页url，需兼容Apache，IIS，php不同安装模式
	if ( isset($_SERVER['REDIRECT_URL']) && !eregi('404.php$',$_SERVER['REDIRECT_URL']) )	{
		$my_url = $_SERVER['REDIRECT_URL'];
	} else if ( isset($_SERVER['URL']) && !eregi('404.php$',$_SERVER['URL']) )	{
		$my_url = $_SERVER['URL'];
	} else if ( isset($_SERVER['REQUEST_URI']) && !eregi('404.php$',$_SERVER['REQUEST_URI']) )	{
		$my_url = $_SERVER['REQUEST_URI'];
	} else if ( isset($_SERVER['SCRIPT_URL']) && !eregi('404.php$',$_SERVER['SCRIPT_URL']))	{
		$my_url = $_SERVER['SCRIPT_URL'];
	} else {
		$my_url = '';
	}
	return $my_url;
}


function getMyPhpUrl($article_dir, $cms_dir)	{
	$my_url = getPageUrl();
	if ( strstr($cms_dir, ',') )	{
		$cms_dir_ary = explode($cms_dir, ',');
		$article_dir_ary = explode($article_dir, ',');
		for ( $i=0; $i<count($cms_dir_ary); $i++ )	{
			if ( isset($php_url) && $php_url != '' )	{
				break;
			}
			$php_url = getPhpUrl($my_url, $article_dir_ary[$i], $cms_dir_ary[$i]);
		}
	} else {
		$php_url = getPhpUrl($my_url, $article_dir, $cms_dir);
	}
	return $php_url;
}
// ############### 本程序私有函数 结束 ################


$jump_url	= '';			// 404状态默认跳转地址，可设置为 /



// cms目录和文章主目录变量
// 如果同一个虚拟主机绑定了多个网站，可手工修改此变量
// 并将他保存成一个新的404文件，如 all_hbcms404.php
// 多个cms目录和文章主目录名称之间以,隔开
// 例如 hbcms_1,hbcms_2,hbcms_3 和 article_1,article_2,article_3


$cms_dir		= '<{cms_dir}>';
$article_dir	= '<{article_dir}>';




// 获取生成对应静态页的php地址
$php_url = getMyPhpUrl($article_dir, $cms_dir);

if ( $php_url != '' )	{
	$jump_url = $php_url;
}


// php程序员可以在此处追加一些其它的处理过程
// http://www.hbcms.com/
// http://www.hbw.cn/
// ......
// ......


if ( $jump_url != '' )	{
	// 执行跳转
	header("HTTP/1.1 301 Moved Permanently"); // 面向搜索引擎的友好模式
    header("location:$jump_url");
    exit();
} else {
	// 其他异常处理
	if( file_exists('./hbcms404.html') ) {
		include('./hbcms404.html');
	} else {
		header("Content-Language: charset=zh-cn"); 
		header("Content-type: text/html; charset=GB2312");
		echo '<style>body,td{font-size:9pt;}a:link,a:visited{color:blue;}</style><CENTER><P>&nbsp;<BR> 页面不存在，请访问<a href=/>网站首页</a> ';
		echo '<p> The page you requested does not exist or has moved, ';
		echo '<P> <a href=/>Please Visit Our Homepage</a> <P> 提示：3 秒钟后，本页面会自动打开网站首页！<script>setTimeout("location.href=\'/\';",4000);</script></CENTER>';
	}
	exit();
}

?>