[亲测有效] 织梦dedecms伪静态(/{栏目}/{文章id}.html),宝塔面板、nginx环境

老丁
1、后台-系统参数-核心设置-是否使用伪静态:选择“是”;
然后所有新建栏目的时候选“使用动态页”, 而且在“文件保存目录”填写入此栏目想使用的目录名

比如“ 下载 ”这个栏目, 就写“ /xiazai ” 记得前面加上斜杠


2、如果之前生成过静态html, 要先删除所有已经生成的页面,然后在“后台-系统-SQL命令行工具”中执行如下语句:
    2.1 将所有文档设置为“仅动态浏览”:
        update dede_archives set ismake=-1
    2.2 将所有栏目设置为“使用动态页”:

        update dede_arctype set isdefault=-1


3、先修改/include/helpers/channelunit.helper.php文件
(1)查找:
//动态文章
if($cfg_rewrite == 'Y')
{
return $GLOBALS["cfg_plus_dir"]."/view-".$aid.'-1.html';
}
替换为
//动态文章
if($cfg_rewrite == 'Y')
{
return $typedir."/view-".$aid.'.html';
}
意思是:将默认类似“/plus/view-1-1.html”这样的文章链接格式改为/栏目的目录/view-1.html。比如 http://*******/xiazai/view-1.html,其中view可以根据你自己的需要改为你自己的。
(2)查找:(修改栏目或频道首页的URL生成格式)
//动态
$reurl = $GLOBALS['cfg_phpurl']."/list.php?tid=".$typeid;
替换为
//动态
$reurl = $typedir."/";

意思是:将默认的频道栏目地址URL由/plus//list.php?tid=1变更为“/栏目的目录/”形式。比如 http://*******/xiazai/,dedecms默认栏目地址是没有伪静态的,及时开启了伪静态也没有,所以这里直接在动态里面改了,当然,你可以自己增加一个if语句,像上面的文章地址一样,不过要先声明一下伪静态标识的变量。


4、列表分页伪静态修改

打开/include/arc.listview.class.php
查找:
$geturl = "tid=".$this->TypeID."&TotalResult=".$this->TotalResult."&";
替换为
$geturl = "&";
在查找:
$plist = str_replace('.php?tid=', '-', $plist);
替换为
$plist = str_replace('?','list', $plist);
$plist = str_replace('list.php', '', $plist);
将默认的plus/list.php?tid=替换成/list-;的模式
意思是:将默认的列表分页链接格式plus/list.php?tid=x$x$xl修改为/list-x.html,这样就能在列表分页实现 http://*******/xiazai/list-2.html这种地址形式。


5、最后给出.htaccess伪静态规则

RewriteEngine On
#栏目地址伪静态(这里必须纯手工, 以 下载 这个栏目为例,该栏目的ID是3 栏目的目录为xiazai,你要改为你自己的栏目ID 以此类推)
RewriteRule ^xiazai/$ /plus/list.php?tid=3
#列表页分页地址伪静态(这里必须纯手工, 以 下载 这个栏目为例,该栏目的ID是3你要改为你自己的栏目ID 以此类推)
RewriteRule ^xiazai/list-([0-9]+)\.html$ /plus/list.php?tid=3&PageNo=$1
#文章地址伪静态
RewriteRule ^xiazai/view-([0-9]+)\.html$ /plus/view.php?aid=$1
RewriteRule ^xiazai/view-([0-9]+)-([0-9]+)\.html$ /plus/view.php?aid=$1&pageno=$2
#上面的四句伪静态规则为一个栏目,如果还有其他栏目,则直接复制上面的稍微修改就可以了,比如下面是评测文章(ID是4)这个栏目的伪静态规则:
RewriteRule ^pingcewenzhang/$ /plus/list.php?tid=4
RewriteRule ^pingcewenzhang/list-([0-9]+)\.html$ /plus/list.php?tid=4&PageNo=$1
RewriteRule ^pingcewenzhang/view-([0-9]+)\.html$ /plus/view.php?aid=$1
RewriteRule ^pingcewenzhang/view-([0-9]+)-([0-9]+)\.html$ /plus/view.php?aid=$1&pageno=$2


6、TAG这些的伪静态个人觉得不必要,所以没写了,可以直接用内链代替,还有不懂的就回帖吧。


7、nginx伪静态规则

location / {
#首页
rewrite "^/index.html$" /index.php last;
#列表页
rewrite "^/jianpu/$" /plus/list.php?tid=2 last;
rewrite "^/png/$" /plus/list.php?tid=3 last;
#列表分页
rewrite "^/jianpu/list-([0-9]+)\.html$" /plus/list.php?tid=2&PageNo=$1 last;
rewrite "^/png/list-([0-9]+)\.html$" /plus/list.php?tid=2&PageNo=$1 last;
#文档详情页
rewrite "^/jianpu/([0-9]+)\.html$" /plus/view.php?aid=$1 last;
rewrite "^/png/([0-9]+)\.html$" /plus/view.php?aid=$1 last;
#文档详情页分页
#rewrite "^/jianpu/([0-9]+)-([0-9]+)\.html$" /plus/view.php?aid=$1&pageno=$2 last;
#rewrite "^/png/([0-9]+)-([0-9]+)\.html$" /plus/view.php?aid=$1&pageno=$2 last;
#标签汇总页
rewrite "^/tags/$" /tags.php last;
#标签详情页
rewrite "^/tags/(.*)/$" /tags.php?/$1/ last;
break;

}


补充:

1、设置全站伪静态后,登录后台时,必须在地址栏补加上index.php,例如:http://www.123.com/dede/index.php,否则会提示Request Error!错误。如果你登录不想加index.php或者某个文件夹想排除的朋友,可以在栏目列表伪静态规则前面加个排除目录,排除后台目录不使用伪静态

#列表栏目 RewriteRule ^(?!dede|m|admin)(.*)/$ /plus/list.php?tid=$1

image.png


2、我在本地IIS测试时发现搜索伪静态显示错误:Request Error!,原来是有个BUG,文章的伪静态规则和搜索的规则有冲突,解决方法就是把搜索的伪静态规则放到文章伪静态规则前面并在后面加上加[L]就解决了。

image.png


参考链接:https://www.baishitou.cn/2506.html


发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,908人围观)

还没有评论,来说两句吧...