织梦cms怎么做伪静态

DedeCMS教程SEO优化URL重写

为什么织梦要做伪静态

织梦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 一致,只是语法格式不同。

三、修改织梦程序文件

仅靠服务器规则还不够,织梦前台模板里输出的链接也需要改成伪静态格式。需要修改的文件主要有:

  1. /include/helpers/channelunit.helper.php 中的 GetFileUrlGetTypeUrl 函数,把动态参数拼接改为 .html 形式。
  2. /plus/view.php/plus/list.php 确保读取参数方式与重写规则对应。
  3. 分页链接函数 GetPageListDM,把翻页地址改成 list_{tid}_{page}.html
修改核心文件前务必备份,建议用注释保留原始代码,便于出错后回滚。

四、重新生成全站并测试

规则配置完成后,进入后台「生成」-「一键更新网站」,重新生成HTML。然后用浏览器访问伪静态地址,确认页面能正常打开。最后用工具抓取几条URL,检查返回状态码是否为200,确保没有出现死链。

常见问题排查

问题原因解决办法
伪静态页面404规则未生效或路径不匹配检查Rewrite模块是否开启,规则正则是否正确
样式丢失重写规则误伤了静态资源在规则前加排除条件,跳过css/js/图片目录
翻页打不开分页函数未同步修改检查channelunit.helper.php分页链接格式
伪静态和真静态不要混用。如果同时开启了静态生成又启用伪静态,可能导致同一内容出现两套URL,反而触发重复收录问题。建议二选一。

后续优化建议

伪静态上线后,建议配合robots.txt屏蔽 /plus/ 原始动态路径,并在百度搜索资源平台提交新的伪静态sitemap,加速新URL的收录替换。同时定期用日志分析工具查看蜘蛛抓取情况,发现异常及时调整规则。一个规范的URL结构是SEO长期积累的基础,值得在前期把规则打磨到位。