我下面讲的是Linux环境下DEDECMS5.5实现伪静态的方法,5.3应该也适用。
当然需要空间支持这是必须的。
1.首在在后台开启伪静态.
2.然后栏目和文章设置成动态浏览.
设置方法为:在后台系统设置sql里执行以下语句
将所有文档设置为“仅动态浏览”,update DEDE_archives set ismake=-1
将所有栏目设置为“使用动态页”,update dede_arctype set isdefault=-1
改成1就是静态。动态转换为静态后需要重新生成HTML。
3. 设置重写规则. 在根目录建立.htaccess文件. 内容为:
RewriteEngine On
RewriteBase /
RewriteRule ^list-([0-9]+)\.html$ /plus/list.php?tid=$1
RewriteRule ^list-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /plus/list.php?tid=$1&totalresult=$2&PageNo=$3
RewriteRule ^view-([0-9]+)-1\.html$ /plus/view.php?arcID=$1
RewriteRule ^view-([0-9]+)-([0-9]+)\.html$ /plus/view.php?aid=$1&pageno=$2
4.修改/include/channelunit.func.php文件
1)if($isdefault==-1)
{
//动态
$reurl = $GLOBALS['cfg_phpurl'].”/list.php?tid=”.$typeid;
}
改为:
if($isdefault==-1)
{
//动态
if($cfg_rewrite == ‘Y’)
{
$reurl = $GLOBALS['cfg_cmsurl'].”/list-{$typeid}.html”;
}
else
{
$reurl = $GLOBALS['cfg_phpurl'].”/list.php?tid=”.$typeid;
}
}
2) global $cfg_typedir_df;
改为:
global $cfg_typedir_df,$cfg_rewrite;
3)if($rank!=0 || $ismake==-1 || $typeid==0 || $money>0)
{
//动态文章
if($cfg_rewrite == ‘Y’)
{
return $GLOBALS["cfg_plus_dir"].”/”.$aid.’-1.html’;
}
else
{
return $GLOBALS['cfg_phpurl'].”/view.php?aid=$aid”;
}
}
else
改为:
if($rank!=0 || $ismake==-1 || $typeid==0 || $money>0)
{
//动态文章
if($cfg_rewrite == ‘Y’)
{
return $GLOBALS["cfg_cmsurl"].”/”.$aid.’-1.html’;
}
else
{
return $GLOBALS['cfg_phpurl'].”/view.php?aid=$aid”;
}
}
else
到这里就可以了。
列表形式类似于http://www.211dy.com/list-2-28-2.html
页面形式类似于http://www.211dy.com/54-1.html
5.如果你要改成类似于http://www.211dy.com/211dy-54-1.html 就需要修改include/arc.archives.class.php
把里面的view都替换成你想改的,如我这里的211dy。
同时需要修改.htaccess文件中的规则为
RewriteEngine On
RewriteBase /
RewriteRule ^list-([0-9]+)\.html$ /plus/list.php?tid=$1
RewriteRule ^list-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /plus/list.php?tid=$1&totalresult=$2&PageNo=$3
RewriteRule ^211dy-([0-9]+)-1\.html$ /plus/view.php?arcID=$1
RewriteRule ^211dy-([0-9]+)-([0-9]+)\.html$ /plus/view.php?aid=$1&pageno=$2
有一个问题就是如果你是采集的文章每次导入后需要再次运行 update dede_archives set ismake=-1 行将所有文档设置为“仅动态浏览”。其实运行这个语句用不了几秒钟。
705548242