设置织梦全站伪静态前请先了解自己的服务器是否支持伪静态并且已经开启了伪静态功能;织梦伪静态开启成功后,登录后台地址时,可能会出现访问空白现象,只需要在后台地址加index.php即可 列:www.baidu.com/dede/index.php
织梦全站伪静态虽然比较简单但是改的内容也比较多,如果您觉得麻烦可以直接 下载我修改好的文件直接覆盖到您的网站中即可 下载地址 https://download.csdn.net/download/qq_39339179/20241593
1、第一步:设置开启织梦全站伪静态
a、在网站后台打开伪静态;
2、第二步:设置织梦dedecms全站栏目和文章为动态链接
a、设置栏目和文章为动态链接在系统-SQL命令行工具中执行如下语句(如果您的栏目和文章地址本来就是动态的可以忽略此步骤)
//dede_ 改为你自己的表前缀
update dede_arctype set isdefault=-1;
update dede_archives set ismake=-1;
3、第三步:修改织梦dedecms列表页和内容页伪静态链接
a、找到/plus/list.php 文件打开,把
$tid = (isset($tid) && is_numeric($tid) ? $tid : 0);
替换成
if($cfg_rewrite == 'Y')
{
if(!is_numeric($tid))
{
$typedir = parse_url($tid, PHP_URL_PATH);
$PageNo = stripos(GetCurUrl(), '.html') ? intval(str_replace('.html', '', end(explode("_", GetCurUrl())))) : 1;
$tinfos = $dsql->GetOne("SELECT * FROM `#@__arctype` WHERE typedir='/$typedir' or typedir='{cmspath}/$typedir'");
if(is_array($tinfos))
{
$tid = $tinfos['id'];
$typeid = GetSonIds($tid);
$row = $dsql->GetOne("Select count(id) as total From `#@__archives` where arcrank>-1 and typeid in({$typeid})");
}
else
{
$tid = 0;
}
}
}
else
{
$tid = (isset($tid) && is_numeric($tid) ? $tid : 0);
}
b、找到/plus/view.php 文件打开,在 $t1 = ExecTime(); 下面加 如下代码
if ($cfg_rewrite == 'Y')
{
if (!is_numeric($aid))
{
$aid = stripos(GetCurUrl(), '.html') ? str_replace('.html', '', end(explode("/", GetCurUrl()))) : 0;
$aidpage = explode("_", $aid);
$aid = intval($aidpage[0]);
$pageno = intval($aidpage[1]);
}
$arcrow = GetOneArchive($aid);
if ($arcrow['arcurl'] != GetCurUrl())
{
header("location:/404.html");
die ();
}
}
c、打开 /include/arc.listview.class.php 找到 //获得上一页和下一页的链接 在它的上面加入
if($cfg_rewrite == 'Y')
{
$purl = "";
}
else
{
$geturl = "tid=".$this->TypeID."&TotalResult=".$this->TotalResult."&";
$purl .= '?'.$geturl;
}
继续找到 $plist = str_replace('.php?tid=', '-', $plist); 在它的上面加入
$tnamerule = $this->GetMakeFileRule($this->Fields['id'],"list",$this->Fields['typedir'],$this->Fields['defaultname'],$this->Fields['namerule2']);
$tnamerule = preg_replace("/^(.*)\//", '', $tnamerule);
$plist = preg_replace("/PageNo=(\d+)/i",str_replace("{page}","\\1",$tnamerule),$plist);
d、打开 /include/helpers/channelunit.helper.php 找到 global $cfg_typedir_df; 替换为
global $cfg_typedir_df, $cfg_rewrite;
找到 $reurl = $GLOBALS['cfg_phpurl']."/list.php?tid=".$typeid; 替换为
if($cfg_rewrite == 'Y' && $ispart != 2)
{
$reurl = $typedir.'/';
}
else
{
//动态
$reurl = $GLOBALS['cfg_phpurl']."/list.php?tid=".$typeid;
}
找到 return $GLOBALS["cfg_plus_dir"]."/view-".$aid.'-1.html'; 替换为
$articleDir = MfTypedir($typedir);
$articleRule = strtolower($namerule);
if($articleRule=='')
{
$articleRule = strtolower($GLOBALS['cfg_df_namerule']);
}
if($typedir=='')
{
$articleDir = $GLOBALS['cfg_cmspath'].$GLOBALS['cfg_arcdir'];
}
$dtime = GetDateMk($timetag);
list($y, $m, $d) = explode('-', $dtime);
$arr_rpsource = array('{typedir}','{y}','{m}','{d}','{timestamp}','{aid}','{cc}');
$arr_rpvalues = array($articleDir,$y, $m, $d, $timetag, $aid, dd2char($m.$d.$aid.$y));
if($filename != '')
{
$articleRule = dirname($articleRule).'/'.$filename.$GLOBALS['cfg_df_ext'];
}
$articleRule = str_replace($arr_rpsource,$arr_rpvalues,$articleRule);
if(preg_match("/\{p/", $articleRule))
{
$articleRule = str_replace('{pinyin}',GetPinyin($title).'_'.$aid,$articleRule);
$articleRule = str_replace('{py}',GetPinyin($title,1).'_'.$aid,$articleRule);
}
$articleUrl = '/'.preg_replace("/^\//", '', $articleRule);
if(preg_match("/index\.html/", $articleUrl) && $cfg_arc_dirname=='Y')
{
$articleUrl = str_replace('index.html', '', $articleUrl);
}
return $articleUrl;
4、第四步:织梦dedecms文章内容页,分页伪静态
a、打开 /include/arc.archives.class.php
找到 $PageList = preg_replace("#.php\?aid=(\d+)#i", '-\\1-1.html', $PageList); 改成
$PageList = preg_replace("#view.php\?aid=(\d+)#i", '\\1.html', $PageList);
再找到 $PageList = str_replace(".php?aid=", "-", $PageList); 改成
$PageList = str_replace("view.php?aid=", "", $PageList);
再找到 $PageList = preg_replace("#&pageno=(\d+)#i", '-\\1.html', $PageList); 改成
$PageList = preg_replace("#&pageno=(\d+)#i", '_\\1.html', $PageList);
4、第五步:织梦dedecmsTAG标签伪静态
a、打开根目录下 /tags.php 找到 18行 if(isset($tags[2])) $PageNo = intval($tags[2]); 下方加入
$tagid = intval($tag);
if(!empty($tagid))
{
$row = $dsql->GetOne("SELECT tag FROM `#@__tagindex` WHERE id = {$tagid}");
if(!is_array($row))
{
ShowMsg("系统无此标签,可能已经移除!","-1");exit();
}
else
{
$tag = $row['tag'];
define('DEDERETAG', 'Y');
}
}
else
{
$tag = '';
}
b、 打开/include/taglib/tag.lib.php 文件大约87行找到
$row['link'] = $cfg_cmsurl."/tags.php?/".urlencode($row['keyword'])."/"; 替换为
$row['link'] = $cfg_cmsurl."/tags/".$row['id'].".html";
c、打开/include/arc.taglist.class.php 文件大约458行找到 $purl .= "?/".urlencode($this->Tag); 替换
if(!defined('DEDERETAG'))
{
$purl .= "?/".urlencode($this->Tag);
}
d、继续找到 return $plist; 在上方加入
if(defined('DEDERETAG'))
{
$plist = preg_replace('/_(\d+).html/i','.html',$plist);
$plist = preg_replace('/.html\/(\d+)\//i','_\\1.html',$plist);
}
到此设置织梦全站伪静态全部完成,不过还需要根据自己的网站运行环境来配置伪静态规则
具体的规则请查看 iis/apache/nginx/环境下织梦伪静态规则