关于修改disczu模板以后使伪静态链接失效的问题
内容简介:这是一篇关于伪静态失效,discuz 伪静态失效,discuz 静态 模板的文章。论坛开启伪静态以后,之前一直正常,前几天链接突然变回动态的链接。而没有变成 thead-1-1.html这种形式,而 thead-1-1.html这样的链接仍
前几天碰到一个问题
论坛开启伪静态以后,之前一直正常,前几天链接突然变回动态的链接。而没有变成 thead-1-1.html这种形式,而 thead-1-1.html这样的链接仍旧是可以访问的,说明rewrite.ini规则仍然是生效的。而且这事跟rewrite规则应该没关系,主要是dz的程序问题。
更新缓存无效。
细想了一番,觉得应该从dz的伪静态原理着手,发现dz是在 include目录下 global.func.php 文件中output()内根据伪静态的设置情况对页面输出的内容进行正则替换的:
} else {
$searcharray = $replacearray = array();
if($rewritestatus & 1) {
$searcharray[] = "/\<a href\=\"forumdisplay\.php\?fid\=(\d+)(&page\=(\d+))?\"([^\>]*)\>/e";
$replacearray[] = "rewrite_forum(‘\\1‘, ‘\\3‘, ‘\\4‘)";
}
if($rewritestatus & 2) {
$searcharray[] = "/\<a href\=\"viewthread\.php\?tid\=(\d+)(&extra\=page\%3d(\d+))?(&page\=(\d+))?\"([^\>]*)\>/e";
$replacearray[] = "rewrite_thread(‘\\1‘, ‘\\5‘, ‘\\3‘, ‘\\6‘)";
}
if($rewritestatus & 4) {
$searcharray[] = "/\<a href\=\"space\.php\?(uid\=(\d+)|username\=([^&]+?))\"([^\>]*)\>/e";
$replacearray[] = "rewrite_space(‘\\2‘, ‘\\3‘, ‘\\4‘)";
}
if($rewritestatus & 8) {
$searcharray[] = "/\<a href\=\"tag\.php\?name\=([^&]+?)\"([^\>]*)\>/e";
$replacearray[] = "rewrite_tag(‘\\1‘, ‘\\2‘)";
}
}$content = preg_replace($searcharray, $replacearray, ob_get_contents());
但是,查边了所有的程序文件,发现没有什么地方调用了output函数,见鬼了。。
睡醒了后想,可能是在模板文件里面调用的,于是下载了一个新的dz文件,在其中搜索。。才发现,在之前我修改了footer模板,删除了以下语句
{eval output();}
删除此句后,无论如何设置伪静态,链接都不会改变。。
曾经在论坛搜索“伪静态 模板”发现几个这样的问题都没有有用回答,特此发文,希望对有类似经历的朋友能有所帮助。
相关帖子
http://www.discuz.net/viewthread.php?tid=908298
http://www.discuz.net/viewthread.php?tid=1098010
http://www.discuz.net/viewthread.php?tid=295351
http://www.discuz.net/viewthread.php?tid=605670
上一篇:网站静态化的三种方式优劣对比这是一篇关于https:/www.google.com.hk/,页面静态化,网页静态化的文章。一提到搜索引擎优化,很多人认为页面静态化是一项重要的功能,那么你是否了解静态化,有哪些静态化方式?本文就此对三种网站静态化的方式做个简单的比较。
下一篇:为什么我的访问统计里有来自美国google的访问者?这是一篇关于a,google访问统计,google 访问统计的文章。站长有时候查看访问统计的时候,会发现经常有来自美国的ip访问,一追踪来源,有时候是google总部,有的是来自西雅图微软,这些莫名其妙的访问给站长添加了不少