让网友来帮您生成网页!利用404状态自动生成静态页!
时间:2006-08-03
来源:互联网
目的:让网友来帮您生成网页!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程序员,可以自己进行扩展。如有更优化更高效的版本,请和大家分享!
代码:
<?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();
}
?>
下面是本系统的 404.shtml 的源代码,如果您比较熟悉javascript脚本,可以自己进行扩展。
本文件路径为: /hbcms/include/hbw.cn/config/404.shtml 如有更优化更高效的版本,请和大家分享!
代码:
<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>文件不存在 - HBcms自动生成网页shtml版本</title>
<style>
body,td{font-size:9pt;}
a{color:blue}
</style>
</head>
<base target="_self"></base>
<body leftmargin="0" topmargin="0" bgcolor="white">
<SCRIPT LANGUAGE="JavaScript">
<!--
var cms_dir = 'hbcms';
var article_dir = 'cms';
var uri = '<!--#echo var="REQUEST_URI" -->';
var my_url = uri.split('\?')[0];
var f_basename = location.href.match("[^/]*$")[0];
var basename = f_basename.split('\?')[0];
var jump_url = '';
function hbcms_is_article(s)
{
var patrn=/\/(.){2}\/[0-9]{0,10}\.html$/;
if (!patrn.exec(s)) return false;
return true;
}
function hbcms_is_article_list(s)
{
var patrn=/\/(.){1,}\/[0-9]{0,10}_[0-9]{0,10}\.html$/;
if (!patrn.exec(s)) return false;
return true;
}
function jump(url) {
location.href = url;
return true;
}
function hbcms_handle_page() {
if ( my_url.indexOf('/' + article_dir + '/') != -1 && my_url.indexOf('/' + cms_dir + '/') != -1 )
{
if ( hbcms_is_article(my_url) )
{
article_id = basename.split('\.')[0];
jump_url = '/' + cms_dir + '/php/article_detail.php?article_id=' + article_id;
jump(jump_url);
}
else if ( hbcms_is_article_list(my_url) )
{
type_pg = basename.split('\.')[0];
type_pg_ary = type_pg.split('_');
jump_url = '/' + cms_dir + '/php/article_list.php?type_id=' + type_pg_ary[0] + '&pageID=' + type_pg_ary[1] + '';
jump(jump_url);
}
}
}
// 您可以在此处追加一些其它的处理过程
// http://www.hbcms.com/
// http://www.hbw.cn/
// ......
// ......
/* 开始执行处理过程 */
hbcms_handle_page();
//-->
</SCRIPT>
<P> <P>
<TABLE align=center>
<TR>
<TD align=center>
<H4>网页不存在</H4>
您访问的页面已经被管理员删除或不存在
<SCRIPT LANGUAGE="JavaScript">
<!--
if ( jump_url != '' )
{
document.write('<P><FONT COLOR="red">系统正在自动生成该网页....</FONT>');
document.write('<p>如果10秒后网页还停留在此处,<A HREF="'+jump_url+'">请点击这里</A>');
document.write('<P>或者<P>');
}
//-->
</SCRIPT>
<P> 请访问<a href=/>网站首页</a>
<P>
The page you requested does not exist or has moved!
<P> <a href=/>Please Visit Our Homepage</a>
<P>
You requested page is :
<P>
<!--#echo var="REQUEST_URI" -->
<P>
HBcms自动生成网页shtml版本
<P>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>
作者: hbcms 发布时间: 2006-08-02
可以不呵呵~
作者: EastSon 发布时间: 2006-08-02
引用:
原帖由 dashan 于 2006-8-2 17:33 发?<!--#include file="404.php" -->
可以不呵呵~
如果是 <!--#include file="生成页面的程序.php?传递所需要的参数" --> 或许可以,要测试,不知道是否支持参数传递
[ 本帖最后由 hbcms 于 2006-8-2 17:37 编辑 ]
作者: dashan 发布时间: 2006-08-02
<!--#include file="生成页面的程序.php?传递所需要的参数" -->
不能传递参数,报错:
[an error occurred while processing this directive]
作者: hbcms 发布时间: 2006-08-02
引用:
原帖由 hbcms 于 2006-8-2 17:47 发表测试了
<!--#include file="生成页面的程序.php?传递所需要的参数" -->
不能传递参数,报错:
作者: hbcms 发布时间: 2006-08-02
谢谢楼主!!
作者: dashan 发布时间: 2006-08-02
找�r�g����
作者: lmhllr 发布时间: 2006-08-03
作者: benero 发布时间: 2006-08-04
作者: 七月十五 发布时间: 2006-09-04
受益!
作者: herbwang 发布时间: 2006-09-04
作者: coolstr 发布时间: 2006-09-05
作者: barani 发布时间: 2006-09-06
作者: szy_session1987 发布时间: 2006-09-09
作者: ClearWind 发布时间: 2006-09-10
作者: neuron 发布时间: 2006-09-12
作者: fnet 发布时间: 2006-09-26


作者: mzli 发布时间: 2006-09-26
作者: 1128sky7 发布时间: 2007-08-02
引用:
原帖由 neuron 于 2006-9-10 20:33 发表不知道楼主对于“已生成的静态页的更新”有怎么样的设计思路呢?
另一种是用js,后台生成js,或者我想php动态生成js。
办法很多的,希望有更多人讨论
作者: fnet 发布时间: 2007-08-02
作者: fnet 发布时间: 2007-10-02
引用:
原帖由 七月十五 于 2006-8-4 23:16 发表只有想不到没有做不到

作者: youreyes 发布时间: 2007-10-02
生成的静态页里面放些什么呢?
还有一个,
如果人家发现了这个,不断地随便输入网址,就会不断地生成html?
作者: 疯子-斯 发布时间: 2008-01-18
引用:
原帖由 fnet 于 2007-8-2 10:45 发表已生成的静态页更新,我想了想:可以用一下几种方法,一种是ajax,静态页自动用ajax载入,这样你更新数据库,也就更新了。
另一种是用js,后台生成js,或者我想php动态生成js。
办法很多的,希望有更多 ...
作者: sundyandy 发布时间: 2008-01-23
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28