让dedecms的tags标签页实现伪静态化
织梦DedeCMS是一个强大的网站内容管理系统,可以全站静态化,非常适合seo优化,唯一让人不爽的是它的tag标签链接是“tags?/”这样的动态url。那么有没有办法将原来的“/tags.php?/xxxx/”变成“/tags/xxxx.html”这样的url形式呢?答案是肯定的,下面星星之火就分享一下实现dedecms的tag标签伪静态的修改方法。
首先打开dedecms的/include/taglib/tag.lib.php文件,找到第87行如下这句代码
$row['link'] = $cfg_cmsurl."/tags.php?/".urlencode($row['keyword'])."/";
将其改成
$row['link'] = $cfg_cmsurl."/tags/".urlencode($row['keyword']).".html";
然后我们打开所使用模板文件夹下的taglist.htm文件,比如默认模板文件夹就是templets/default/taglist.htm,用编辑器打开在里面查找“tags.php”将其全部修改为“tags.html”
最后来设置我们的伪静态规则
以IIS7为例,我们应该在web.config里写入如下伪静态规则
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="weather1" stopProcessing="true"> <match url="tags/([^-]+).html$" ignoreCase="true" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="/tags.php?/{R:1}" appendQueryString="false" /> </rule> <rule name="weather2" stopProcessing="true"> <match url="tags/([^-]+)-([0-9]+).html$" ignoreCase="true" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="/tags.php?/{R:1}/{R:2}" appendQueryString="false" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
如果你是IIS6,那么就是在httpd.ini文件里加入下面这段
RewriteRule ^(.*)/tags\.html $1/tags\.php RewriteRule ^(.*)/tags/(.*).html $1/tags\.php\?$2
而Linux主机的.htaccess写法就是
RewriteRule ^tags\.html$ /tags\.php RewriteRule ^tags/(.*).html$ /tags\.php\?/$1/
最后我们进入dedecms后台更新下缓存就算搞定了。