织梦tag伪静态不仅利于美观而且还利于SEO,但是官方提供的tag是tags.php?/+中文,为结尾的格式而且还是动态调用数据库,对于喜爱静态的朋友来说十分的不习惯,而且官方的教程和网络上的其他教程都不详细,实现的比较少。以下是本人摸索出来的教程,不需要在后台开启伪静态,也不需要修改数据库等内容,十分的方便。下面附教程。
环境:
       linux系统,nginx环境,宝塔linux面板,欲实现的格式为:域名/tags/id.html
步骤
1、更改include/arc.taglist.class.php 文件中的
 
              $this->TagInfos = $this->dsql->GetOne("Select * From `dede_tagindex` where taglike '{$this->Tag}' ");
替换为:$this->TagInfos = $this->dsql->GetOne("Select * From `dede_tagindex` where id like'{$this->Tag}' ");
注:代表从数据库中输出tag名字变更为输出tag的ID,即tags.php?/中文,变成tags.php?/id
 
2、更改include/taglib/tag.lib.php
        找到$row['keyword'] = $row['tag']; 将$row['tag']更改为$row['id']
        找到$row['link'] = $cfg_cmsurl."/tags.php?/".$row['keyword']."/";
更改为:$row['link'] = $cfg_cmsurl."/tags/".urlencode($row['id']);
注:第一行代表将tag的名字变为tag的id,第二行代表将tags.php?/+tag关键字变更为tags格式+tag的id
 
3、修改tag列表调用页获取tag标题,在对应的tag首页模板里面修改
      {dede:field.title /}更改为{dede:sql sql="select tag from dede_tagindex where id=~title~"}[field:tag/]{/dede:sql}
注:代表获取tag原列表中的标题变更为tag的id,然后在模板页调用的结尾加上.html即可
 
4、增加nginx伪静态规则
rewrite ^(.*)/tags.html $1/tags.php;
rewrite ^(.*)/tags/(.*).html $1/tags.php?/$2;
注:需要主机商开放的权限,iis、apache、nginx等伪静态各不相同,其他环境的请自行百度搜索伪静态重写的规则
 
5、文章页调用
{dede:tag type='current'/}
更改为:{dede:field.tags/}
 
       至此大功告成,测试完全无任何问题,将动态的tag重写为伪静态的tag,十分的方便,不需要安装软件,不需要付费购买软件,唯一的一点不足就是不能生成静态的文件,不能生成手机端的伪静态。
 
进阶版:如果要变成域名+tid.html,的样式,(t代表随意的字符,id代表tag的ID,)则需改两处:1、将第2条中/“tags"/改为/"t"即可,2、将第4条伪静态中/tags/改为/t即可。这样的好处之一就是伪静态之后tag的url地址少了一个tags目录,url地址级别就更高一些,SEO的权重更高一些,当然其中的字母t可以设置为任意,但是伪静态的规则也要随之修改。好处之二就是在百度站长后台提交移动适配的时候,与栏目id.html结尾的方式适配规则不一样,这样可以避免移动适配失败。