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();

打开标签链接,就是伪静态路径了