修改DedeCMS程序文件
1、tags.php文件:在DedeCMS程序目录下找到tags.php
文件,打开文件,找到以下代码段:
“`php
$PageNo=1到exit();
“`
将这段代码替换为以下内容:
“`php
//tag伪静态
$tagid = (isset($tagid) && is_numeric($tagid)) ? $tagid : 0;
$PageNo = (isset($PageNo) && is_numeric($PageNo)) ? $PageNo : 1;
if ($tagid == “0”) {
$dlist = new TagList($tag, ‘tag.htm’);
$dlist>Display();
} else {
$row = $dsql>GetOne(“SELECT tag FROM#@__tagindex
WHERE id ={$tagid}”);
if (!is_array($row)) {
ShowMsg(‘系统无此tag’, ‘1’);
exit();
}
$tag = FilterSearch($row[‘tag’]);
$dlist = new TagList($tag, ‘taglist.htm’);
$dlist>Display();
}
exit();
“`
2、tag.lib.php文件:打开include/taglib/tag.lib.php
文件,找到以下代码段:
“`php
$row[‘link’] =$cfg_cmsurl.”/tags.php?/”.urlencode($row[‘keyword’]).”/”;
“`
将其替换为:
“`php
$row[‘link’] = “/tags/”.urlencode($row[‘keyword’]).”/”;
“`
3、arc.taglist.class.php文件:打开include/arc.taglist.class.php
文件,找到分页函数部分,将以下代码段替换为新的分页函数:
“`php
//获得上一页和下一页的链接
if($this>PageNo != 1) {
$prepage .= “<li><a href=’”.$purl.”_$prepagenum.html’>上一页</a></li>r
“;
$indexpage=”<li><a href=’”.$purl.”.html’>首页</a></li>r
“;
} else {
$indexpage=”<li><a href=’$purl.html’>首页</a></li>r
“;
}
if($this>PageNo != $totalpage && $totalpage > 1) {
$nextpage .= “<li><a href=’”.$purl.”_$nextpagenum.html’>下一页</a></li>r
“;
$endpage=”<li><a href=’”.$purl.”_$totalpage.html’>末页</a></li>r
“;
} else {
$endpage=”<li><a>末页</a></li>r
“;
}
“`
设置伪静态规则
根据不同的服务器环境,设置相应的伪静态规则:
1、Apache环境下的规则:新建一个文本文件,添加以下规则,另存为.htaccess
上传到网站根目录,如果已有.htaccess
文件,直接添加规则并保存即可。
“`apache
RewriteBase /
RewriteRule ^tags/([09]+)_([09]+).html$ tags.php?tagid=$1&PageNo=$2 [L]
RewriteRule ^tags/([09]+).html$ tags.php?tagid=$1 [L]
“`
2、nginx环境下的规则:在nginx配置文件中添加以下规则:
“`nginx
rewrite “^/tags/([09]+).html$” /tags.php?tagid=$1 last;
rewrite “^/tags/([09]+)_([09]+).html$” /tags.php?tagid=$1&PageNo=$2 last;
“`
3、IIS环境下的规则:在web.config文件中添加以下规则:
“`xml
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name=”weather1″ stopProcessing=”true”>
<match url=”^tags/([09]+).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?tagid={R:1}” appendQueryString=”false” />
</rule>
<rule name=”weather2″ stopProcessing=”true”>
<match url=”^tags/([09]+)_([09]+).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?tagid={R:1}&PageNo={R:2}” appendQueryString=”false” />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
“`
FAQs
1、为什么设置了伪静态后仍然出现404错误?:这通常是因为伪静态规则没有正确设置或服务器不支持伪静态,请检查伪静态规则是否正确,并确保服务器已启用mod_rewrite模块(对于Apache)或URL重写功能(对于IIS)。
2、如何验证伪静态是否生效?:可以通过查看网页源代码或使用浏览器的开发者工具来检查生成的链接是否包含“.html”扩展名,还可以尝试访问一些带有参数的链接,看它们是否被重写为静态链接。