织梦DEDECMS5.7支持伪静态的解决方法
织梦(DedeCMS)是一款流行的开源内容管理系统,其强大的功能和易用性使其广受用户欢迎,对于SEO优化和网站性能提升来说,启用伪静态是一个非常重要的步骤,本文将详细介绍如何在织梦DEDECMS5.7中实现全站伪静态。
一、开启伪静态支持
需要在织梦后台开启伪静态支持,登录织梦管理员后台,按照以下步骤操作:
1、系统参数设置:
进入后台管理界面,点击“系统”菜单下的“系统基本参数”。
在“核心设置”选项卡中找到“是否使用伪静态”,选择“是”。
2、模块设置:
如果启用了问答模块,还需进入“模块设置”,将“是否使用伪静态”设为“是”。
二、修改栏目和文章设置为动态浏览
为了使栏目和文章页面不生成静态HTML文件,需要将它们设置为动态浏览模式:
1、创建或批量增加栏目:
在创建或批量增加栏目时,选择“使用动态页”。
2、添加新文章:
发布新文章时,选择“仅动态浏览”。
3、已存在的静态页面处理:
如果网站已经存在生成的静态栏目或文章HTML,可以在后台系统SQL命令行工具中执行如下语句:
update dede_arctype set isdefault=1; update dede_archives set ismake=1;
dede
是安装时的数据表前缀,根据实际情况替换。
三、配置伪静态规则
根据服务器类型不同,伪静态规则的配置也有所不同,以下是针对Apache和IIS服务器的伪静态配置方法。
Apache服务器伪静态配置
1、编辑.htaccess文件:
打开站点根目录下的.htaccess文件,添加以下伪静态规则:
RewriteEngine On RewriteRule ^/view([09]+)1.html$ /plus/view.php?aid=$1 [L] RewriteRule ^/view([09]+)([09]+).html$ /plus/view.php?aid=$1&pageno=$2 [L] RewriteRule ^/list([09]+).html$ /plus/list.php?tid=$1 [L] RewriteRule ^/list([09]+)([09]+)([09]+).html$ /plus/list.php?tid=$1&totalresult=$2&PageNo=$3 [L]
保存并上传修改后的.htaccess文件到网站根目录。
IIS服务器伪静态配置
1、加载Rewrite组件:
确保IIS服务器已加载Rewrite组件。
2、配置httpd.ini文件:
在站点根目录下创建httpd.ini文件,添加以下规则:
[ISAPI_Rewrite] # 3600 = 1 hour CacheClockRate 3600 RepeatLimit 32 RewriteRule /RMB/list([09]+).html /plus/list.php?tid=$1 [I] RewriteRule /RMB/list([09]+)([09]+)([09]+).html /plus/list.php?tid=$1&TotalResult=$3&PageNo=$4 [I] RewriteRule /RMB/huilv([09]+)([09]+).html /plus/view.php?arcID=$2&pageno=$3 [I] RewriteRule /(.*)_(.*)_([09]+).html /huilv/?from=$2&to=$3&num=$4 [I] RewriteRule /tags.html /tags.php [I] RewriteRule /tags/(.*)(?:(?.*))? /tags.php?/$1 [I] RewriteRule /tags/(.*)/(?:(?.*))? /tags.php?/$1/ [I] RewriteRule /tags/(.*)/([09])(?:(?.*))? /tags.php?/$1/$2 [I] RewriteRule /tags/(.*)/([09])/(?:(?.*))? /tags.php?/$1/$2/ [I]
保存并上传httpd.ini文件到网站根目录。
四、修改PHP源码实现伪静态
织梦DEDECMS5.7中的部分页面如首页、频道页、列表页、文章页等需要手动修改PHP源码来实现伪静态,以下是具体的修改步骤:
1. 首页伪静态
删除站点根目录下的index.html文件,以后不更新主页HTML即可,也可以选择不使用动态首页。
2. 频道、列表页、文章页伪静态
主要通过修改GetFileName()、GetTypeUrl()两个函数实现,具体步骤如下:
1、打开/include/helpers/channelunit.helper.php文件:
将GetFileName()函数中的代码:
//动态文章 if($cfg_rewrite == 'Y') { return $GLOBALS["cfg_plus_dir"]."/view".$aid.'1.html'; }
替换为:
//动态文章 if($cfg_rewrite == 'Y') { return "/archives/view".$aid.'1.html'; }
将GetTypeUrl()函数中的代码:
//动态 $reurl = $GLOBALS['cfg_phpurl']."/list.php?tid=".$typeid;
替换为:
//动态 $reurl = "/category/list".$typeid.".html";
2、打开/include/arc.listview.class.php文件:
找到获取动态的分页列表GetPageListDM()函数末尾处:
$plist = str_replace('.php?tid=', '', $plist);
替换为:
$plist = str_replace('plus', 'category', $plist); //将默认的plus替换成category $plist = str_replace('.php?tid=', '', $plist);
3、打开/include/arc.archives.class.php文件:
找到获取动态的分页列表GetPagebreakDM()函数末尾处:
$PageList = str_replace(".php?aid=","",$PageList);
替换为:
$plist = str_replace('plus', 'archives', $plist); //将默认的plus替换成archives $PageList = str_replace(".php?aid=","",$PageList);
3. TAG标签伪静态
修改/include/taglib/tag.lib.php文件中的lib_tag()函数下的代码:
$row['link'] = $cfg_cmsurl."/tags.php?/".urlencode($row['keyword'])."/";
替换为:
$row['link'] = $cfg_cmsurl."/tags/".urlencode($row['keyword'])."/";
这样,TAG标签URL中的“.php?”号就去掉了。
4. 搜索伪静态
搜索URL静态化比较麻烦,附带参数多且可能变化,这里简化处理,将搜索URL中的“search.php?”直接替换为“search.html?”,依次打开include文件夹下的channelunit.func.php、arc.searchview.class.php、arc.taglist.class.php以及/include/taglib/hotwords.lib.php,查找“search.php?”替换为“search.html?”即可。
5. 问答模块伪静态
问答模块的伪静态实现比较简单,只需在后台开启伪静态支持即可,对于个别页面,如ask目录下的browser.php、question.php以及include目录下的common.inc.php,无需额外修改。
通过以上步骤,织梦DEDECMS5.7可以实现全站伪静态,提高网站的SEO效果和用户体验,在实际操作过程中可能会遇到一些问题,下面列出一些常见问题及其解答。
Q1: 如何确认服务器是否支持伪静态?
A1: 可以联系空间提供商确认是否支持伪静态,如果是自己的服务器,可以通过加载相应的模块(如Apache的mod_rewrite或IIS的Rewrite组件)来支持伪静态。
Q2: 修改PHP源码后是否需要重启服务器?
A2: 是的,修改PHP源码后建议重启服务器以确保更改生效,还可以清除浏览器缓存以避免缓存问题影响测试结果。
Q3: 伪静态设置完成后如何验证效果?
A3: 可以通过浏览器访问各个页面,检查URL是否已变为伪静态形式,可以使用站长工具检测网站的URL结构是否正确。
Q4: 如果某些页面无法正常访问怎么办?
A4: 如果某些页面无法正常访问,可能是由于伪静态规则配置不正确导致的,可以检查对应的伪静态规则是否正确,或者暂时关闭伪静态功能进行排查。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1235724.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复