DEDECMS织梦程序的Tags标签页面从tags.php到html的伪静态展示
今天帮朋友解决项目的时候,他说网站的tags突然404了,而后台的展示链接:
域名/tags.php?/信托公司/
也是404,所以我就去重新安装了新的dedecms织梦,然后发现,他的根目录tags.php文件被删了,
我们重新拷贝进去,然后看看有没有提示模板找不到的报错,没有即可,有的话,跟我一样,修改根目录tags.php文件,如下:
if($tag == ''){
$dlist = new TagList($tag, 'Tpl/default/tag.htm');//Tpl/default/tag.htm为模板路径
}else{
$dlist = new TagList($tag, 'Tpl/default/taglist.htm');//Tpl/default/tag.htm为模板路径
}
然后后台就可以预览了,但是前端还是404,没办法进行html展示,我还在想,是不是没生成html,结果找了一大圈,发现不是这个原因,最后发现是要伪静态。
第一、设置DEDECMS全站伪静态
这里我们到系统参数-核心中设置全站伪静态。同时,我们还需要给站点设置伪静态规则,这里他是用的Nginx,我们这里就用DEDECMS Nginx伪静态规则。
location / {
rewrite "^/index.html$" /index.php last;
rewrite "^/list-([0-9]+)\.html$" /plus/list.php?tid=$1 last;
rewrite "^/list-([0-9]+)-([0-9]+)-([0-9]+)\.html$" /plus/list.php?tid=$1&totalresult=$2&PageNo=$3 last;
rewrite "^/view-([0-9]+)-1\.html$" /plus/view.php?arcID=$1 last;
rewrite "^/view-([0-9]+)-([0-9]+)\.html$" /plus/view.php?aid=$1&pageno=$2 last;
rewrite ^(.*)/tags\.html $1/tags.php;
rewrite ^(.*)/tags/(.*).html $1/tags.php?/$2;
}
这个很重要,尤其是最后两行关于TAGS的。其实也就是最后2段。
如果你是使用宝塔的话,点击网站,点击该网站的设置,再点击伪静态,选择dedecms,也会出现相关文件的伪静态。
第二、修改配置文件
我们需要到"include/taglib"文件中找到"tag.lib.php"。
找到:
$row['link'] = $cfg_cmsurl."/tags.php?/".urlencode($row['keyword'])."/";
然后修改成:
$row['link'] = $cfg_cmsurl."/tags/".urlencode($row['keyword']).".html";
如果以后还需要更换,或者不确定的话,可以将原来一句代码屏蔽。
然后修改根目录文件tags.php文件,将:
$tag = FilterSearch(urldecode($tag));
修改成:
$tag = urldecode($tag);
最后的根目录代码如下:
<?php
require_once (dirname(__FILE__) . "/include/common.inc.php");
require_once (DEDEINC . "/arc.taglist.class.php");
$PageNo = 1;
if(isset($_SERVER['QUERY_STRING']))
{
$tag = trim($_SERVER['QUERY_STRING']);
$tags = explode('/', $tag);
if(isset($tags[1])) $tag = $tags[1];
if(isset($tags[2])) $PageNo = intval($tags[2]);
}
else
{
$tag = '';
}
$tag = urldecode($tag);
//$tag = FilterSearch(urldecode($tag));
if($tag != addslashes($tag)) $tag = '';
if($tag == ''){
$dlist = new TagList($tag, 'Tpl/default/tag.htm');
}else{
$dlist = new TagList($tag, 'Tpl/default/taglist.htm');
}
$dlist->Display();
exit();
打开标签链接,就是伪静态路径了