您现在的位置是:芭奇站群管理系统 > 学习收录 > -> 利用404状态自动生成静态页!(php)

利用404状态自动生成静态页!(php)

时间:2012-06-13 11:59

 

目的:让网友来帮您生成网页!HBcms可以利用web服务器的404状态,自动为您生成网页。
 
 
 
原理:网友访问网页123.html,如果这个网页不存在,触发404状态,调用 404.php 文件,自动跳转到程序地址,生成并显示网页123.html
 
 
 
高效:网友再次访问网页123.html,因为网页123.html刚才已经自动生成了,所以就可以直接打开网页了。
 
 
 
演示:您可以访问hbcms官方网站看效果演示 http://www.hbcms.com/
 
 
 
使用:首先,您的空间需要支持自定义404错误页面(目前多数虚拟主机都支持)
 
   其次,请将404错误页面指向 /hbcms/include/hbw.cn/config/404.php 就可以了
 
 
 
独家:hbcms是目前唯一一个可以利用服务器的404状态生成静态页文件的cms系统!
 
 
 
扩展:下面是本系统的 404.php 的源代码,如果您是php程序员,可以自己进行扩展。如有更优化更高效的版本,请和大家分享!
 
 
 
[Copy to clipboard] [ - ]
CODE:
 
 
<?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 2006/07/20 12:19:30 aashley Exp $
 
 
 
 
 
// 私有变量
 
$article_dir = 'cms';
 
$cms_dir = 'hbcms';
 
$jump_url = ''; // 404状态默认跳转地址
 
 
 
// 获取原网页url,需兼容Apache,IIS,php不同安装模式
 
if ( isset($_SERVER['REDIRECT_URL']) ) {
 
$my_url = $_SERVER['REDIRECT_URL'];
 
} else if ( isset($_SERVER['URL']) ) {
 
$my_url = $_SERVER['URL'];
 
} else if ( isset($_SERVER['REQUEST_URI']) ) {
 
$my_url = $_SERVER['REQUEST_URI'];
 
}
 
 
 
// 分析原网页url
 
if ( isset($my_url) && eregi('/' . $article_dir . '/',$my_url) && eregi('.html$',$my_url) )   {
 
$basename_ary = explode('.',basename($my_url));
 
$pg_ary = explode('_',$basename_ary[0]);
 
 
 
// 列表页面
 
if ( count($pg_ary) == 2 && is_numeric($pg_ary[0]) && is_numeric($pg_ary[1]) ) {
 
       $jump_url     = '/' . $cms_dir . '/php/article_list.php?pageID=' . $pg_ary[1] . '&type_id=' . $pg_ary[0];
 
}
 
 
 
// 文章页面
 
if ( count($pg_ary) == 1 && is_numeric($pg_ary[0]) ) {
 
       $jump_url     = '/' . $cms_dir . '/php/article_detail.php?article_id=' . $pg_ary[0];
 
}
 
}
 
 
 
// 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 {
 
// 其他异常处理
 
header("Content-Language: charset=zh-cn");
 
header("Content-type: text/html; charset=GB2312");
 
echo '<P> 页面不存在,请访问<a href=/>网站首页</a> ! ';
 
echo '<HR> The page you requested does not exist or has moved, ';
 
echo '<P> <a href=/>Please Visit Our Homepage</a>';
 
exit();
 
}
 
 
 
?>  
 
 
进阶:由于部分虚拟主机不支持直接将php文件作为404状态的执行页面,因此,我们特别制作了shtml版本。
 
   下面是本系统的 404.shtml 的源代码,如果您比较熟悉javascript脚本,可以自己进行扩展。
 
   本文件路径为: /hbcms/include/hbw.cn/config/404.shtml 如有更优化更高效的版本,请和大家分享!