织梦cms怎么做伪静态
为什么织梦要做伪静态
织梦DedeCMS默认生成的动态链接形如 view.php?aid=123,这类带问号参数的URL对搜索引擎抓取不够友好,参数过多容易造成收录重复、权重分散。伪静态(伪静态化)通过服务器URL重写规则,把动态地址伪装成 /123.html 这类静态路径,既保留了动态程序的灵活性,又获得了静态URL的SEO优势。
做伪静态的核心收益有三点:URL更短更规范、利于百度等搜索引擎抓取收录、避免动态参数导致的重复页面。下面分步骤讲解完整配置流程。
一、后台基本参数设置
登录织梦后台,进入「系统」-「系统基本参数」-「核心设置」,找到以下选项调整:
- 是否使用伪静态: 选择「是」
- 文章URL规则: 根据需要选择
{aid}.html或{typedir}/{aid}.html - 列表页URL规则: 建议设置为
{typedir}/list_{page}.html
同时在「系统设置」-「SQL命令行工具」中,把栏目和文档的默认页名称做对应修改,确保前台生成后路径一致。
二、配置服务器伪静态规则
1. Apache 环境(.htaccess)
在网站根目录创建或编辑 .htaccess 文件,写入如下规则:
RewriteEngine On
RewriteBase /
# 列表页伪静态
RewriteRule ^list_([0-9]+)_([0-9]+)\.html$ /plus/list.php?tid=$1&PageNo=$2 [L]
# 文章页伪静态
RewriteRule ^([0-9]+)\.html$ /plus/view.php?aid=$1 [L]
# 栏目首页
RewriteRule ^([0-9a-zA-Z_]+)/?$ /plus/list.php?tid=$1 [L]
2. Nginx 环境
在 server 配置块中加入 rewrite 规则:
location / {
rewrite ^/list_([0-9]+)_([0-9]+)\.html$ /plus/list.php?tid=$1&PageNo=$2 last;
rewrite ^/([0-9]+)\.html$ /plus/view.php?aid=$1 last;
rewrite ^/([0-9a-zA-Z_]+)/?$ /plus/list.php?tid=$1 last;
}
3. IIS 环境
IIS 需要安装 URL Rewrite 组件,然后在根目录 web.config 中配置对应的匹配规则,逻辑与 Apache 一致,只是语法格式不同。
三、修改织梦程序文件
仅靠服务器规则还不够,织梦前台模板里输出的链接也需要改成伪静态格式。需要修改的文件主要有:
/include/helpers/channelunit.helper.php中的GetFileUrl和GetTypeUrl函数,把动态参数拼接改为.html形式。/plus/view.php、/plus/list.php确保读取参数方式与重写规则对应。- 分页链接函数
GetPageListDM,把翻页地址改成list_{tid}_{page}.html。
修改核心文件前务必备份,建议用注释保留原始代码,便于出错后回滚。
四、重新生成全站并测试
规则配置完成后,进入后台「生成」-「一键更新网站」,重新生成HTML。然后用浏览器访问伪静态地址,确认页面能正常打开。最后用工具抓取几条URL,检查返回状态码是否为200,确保没有出现死链。
常见问题排查
| 问题 | 原因 | 解决办法 |
|---|---|---|
| 伪静态页面404 | 规则未生效或路径不匹配 | 检查Rewrite模块是否开启,规则正则是否正确 |
| 样式丢失 | 重写规则误伤了静态资源 | 在规则前加排除条件,跳过css/js/图片目录 |
| 翻页打不开 | 分页函数未同步修改 | 检查channelunit.helper.php分页链接格式 |
伪静态和真静态不要混用。如果同时开启了静态生成又启用伪静态,可能导致同一内容出现两套URL,反而触发重复收录问题。建议二选一。
后续优化建议
伪静态上线后,建议配合robots.txt屏蔽 /plus/ 原始动态路径,并在百度搜索资源平台提交新的伪静态sitemap,加速新URL的收录替换。同时定期用日志分析工具查看蜘蛛抓取情况,发现异常及时调整规则。一个规范的URL结构是SEO长期积累的基础,值得在前期把规则打磨到位。