相信科技改变生活,一个老程序员的闲言碎语。

关于修改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+)(&amp;page\=(\d+))?\"([^\>]*)\>/e";
    $replacearray[] = "rewrite_forum(‘\\1‘, ‘\\3‘, ‘\\4‘)";
   }
   if($rewritestatus & 2) {
    $searcharray[] = "/\<a href\=\"viewthread\.php\?tid\=(\d+)(&amp;extra\=page\%3d(\d+))?(&amp;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总部,有的是来自西雅图微软,这些莫名其妙的访问给站长添加了不少