Z-Blog目前已经实现了首页和文章页的静态化,可以生成HTML文件,可是系统的分类页、标签Tags页、归档页和作者页都没有实现静态化,本文将讲述一个很是简单的方案,能够自动生成各个分类页、归档页和Tags的静态HTML页面,以便用户将网站迁移到Apache等不支持ASP的主机上。
Z-Blog的分类页、标签Tags页、归档页和作者页都是挪用catalog.asp这个文件,因此,修改这个文件,当用户挪用该文件的时候,自动生成针对该页面的HTML文件。如果访客频频读取这个文件,那么在一按时间范围内,可以直接在文件开首使用静态文件,以达到节流系统资源的目的。
具体的修改体例是,先在根下成立一个目录cat,然后使用编辑器打开Z-Blog根目录下的catalog.asp文件,在文件开首插手如下的代码:
Dim objFSODim objFileDim strFileNameDim strFileTimeDim isBuildFileif Request.QueryString("cate")<>"" thenif Request.QueryString("page")<>""then strFileName = "cate" + "_" + Request.QueryString("cate") + "_" + Request.QueryString("page") +".html"else strFileName = "cate" + "_" + Request.QueryString("cate") + ".html"end ifelseif Request.QueryString("tags")<>"" thenif Request.QueryString("page")<>""then strFileName = "tags" + "_" + Request.QueryString("tags") + "_" + Request.QueryString("page") +".html"else strFileName = "tags" + "_" + Request.QueryString("tags") + ".html"end ifelseif Request.QueryString("auth")<>"" thenif Request.QueryString("page")<>""then strFileName = "auth" + "_" + Request.QueryString("auth") + "_" + Request.QueryString("page") +".html"else strFileName = "auth" + "_" + Request.QueryString("auth") + ".html"end ifelseif Request.QueryString("date")<>"" thenif Request.QueryString("page")<>""then strFileName = "date" + "_" + Request.QueryString("date") + "_" + Request.QueryString("page") +".html"else strFileName = "date" + "_" + Request.QueryString("date") + ".html"end ifelseif Request.QueryString("page")<>"" thenstrFileName = "default" + "_" + Request.QueryString("page") +".html"elsestrFileName = "default_1" + ".html"end IfisBuildFile = FalseSet objFSO = CreateObject("Scripting.FileSystemObject")If objFSO.FileExists(Server.MapPath(strFileName)) ThenSet objFile = objFSO.GetFile(Server.MapPath(strFileName))strFileTime = objFileLastModifiedSet objFile = NothingIf datediff("h",strFileTime,Now()) > 1 Then isBuildFile = TrueElse Server.Transfer strFileName Response.EndEnd IfElseisBuildFile = TrueEnd IfSet objFSO = Nothing
找到 Response.Write ArtList.html 一行,在其后面增加如下代码:
If isBuildFile Then ArtList.FileName=strFileName ArtList.Directory="cat" ArtList.SaveEnd if
这样,系统就会自动生玉成部动态页面的静态HTML文件,并且在1小时内不会重复活成,期间如果还有挪用,则自动载入静态HTML文件,以节流系统资源。
颠末这番措置,Z-Blog的全部分类和Tags就都可以生成静态HTML页面了。
颠末静态化之后,便可以将Z-Blog全站都放在PHP+Apache的主机上了。具体体例是,配置Apache主机,使其用php的体例解析asp,然后编辑catalog.asp这个文件,将其代码修改成如下便可:
if (isset($_GET['cate'])) {if (isset($_GET['page'])) { $strFileName = "cate_".strip_tags(stripslashes(trim($_GET['cate'])))."_".strip_tags(stripslashes(trim($_GET['page']))).".html";} else { $strFileName = "cate_".strip_tags(stripslashes(trim($_GET['cate']))).".html";}} else if (isset($_GET['tags'])) {if (isset($_GET['page'])) { $strFileName = "tags_".strip_tags(stripslashes(trim($_GET['tags'])))."_".strip_tags(stripslashes(trim($_GET['page']))).".html";} else { $strFileName = "tags_".strip_tags(stripslashes(trim($_GET['tags']))).".html";}} else if (isset($_GET['auth'])) {if (isset($_GET['page'])) { $strFileName = "auth_".strip_tags(stripslashes(trim($_GET['auth'])))."_".strip_tags(stripslashes(trim($_GET['page']))).".html";} else { $strFileName = "auth_".strip_tags(stripslashes(trim($_GET['auth']))).".html";}} else if (isset($_GET['date'])) {if (isset($_GET['page'])) { $strFileName = "date_".strip_tags(stripslashes(trim($_GET['date'])))."_".strip_tags(stripslashes(trim($_GET['page']))).".html";} else { $strFileName = "date_".strip_tags(stripslashes(trim($_GET['date']))).".html";}} else if (isset($_GET['page'])) {$strFileName = "default_".strip_tags(stripslashes(trim($_GET['page']))).".html";} else {$strFileName = "../default.html";}define("HTML_FILE", dirname(__FILE__)."/".$strFileName);if (file_exists(HTML_FILE)) {echo(file_get_contents(HTML_FILE));exit(0);} else {exit(0);}