要开启DedeCMS的伪静态功能,首先需要理解伪静态的基本原理:通过服务器重写规则将动态URL(如?id=123)转换为静态形式(如/article/123.html),既能提升用户体验,又能优化搜索引擎收录,以下是详细的开启步骤及注意事项,涵盖环境配置、后台设置、规则编写及常见问题解决。

服务器环境支持
伪静态依赖服务器的URL重写模块,不同环境配置方式不同:
- Apache环境:需启用
mod_rewrite模块,检查httpd.conf中是否有LoadModule rewrite_module modules/mod_rewrite.so(去掉#号注释),并确保网站目录配置允许.htaccess(AllowOverride All)。 - Nginx环境:需在配置文件中添加
rewrite规则,通常在server块内编写,无需额外模块。 - IIS环境:需安装URL Rewrite模块,并通过web.config配置规则。
提示:若使用虚拟主机,可联系服务商确认是否支持伪静态及配置权限。
DedeCMS后台设置
-
开启伪静态开关
登录DedeCMS后台,进入【系统】→【系统基本参数】→【核心设置】,找到“是否使用伪静态”选项,选择“是”,保存设置。 -
设置栏目文档命名规则
(图片来源网络,侵删)- 栏目规则:进入【栏目管理】→【增加顶级栏目】或【修改栏目】,在“命名规则”中填写如
{typedir}/list_{page}.html({typedir}为栏目目录,{page}为页码)。 - 文档规则:发布文档时,在“高级选项”中设置文章命名规则,如
{typedir}/{aid}.html({aid}为文章ID)。注意:规则中避免使用特殊字符,建议使用英文、数字及下划线。
- 栏目规则:进入【栏目管理】→【增加顶级栏目】或【修改栏目】,在“命名规则”中填写如
服务器规则配置
根据服务器类型添加对应规则文件:
Apache环境(.htaccess)
在网站根目录创建或编辑.htaccess文件,添加以下内容:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# 统一跳转至index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]
# 栏目列表页
RewriteRule ^([a-z]+)/list_([0-9]+)\.html$ index.php?tid=$2&PageNo=$3
# 文档页
RewriteRule ^([a-z]+)/([0-9]+)\.html$ index.php?tid=$1&aid=$2
</IfModule>
Nginx环境(nginx.conf)
在server块内添加规则:
rewrite "^([a-z]+)/list_([0-9]+)\.html$" /index.php?tid=$2&PageNo=$3 last;
rewrite "^([a-z]+)/([0-9]+)\.html$" /index.php?tid=$1&aid=$2 last;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php last;
}
IIS环境(web.config)
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="DedeCMS Rewrite">
<match url="^(.*)$" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
更新缓存与测试
- 更新缓存:后台点击【系统】→【一键更新缓存】→更新栏目缓存及HTML缓存。
- 测试URL:访问栏目页(如
/news/list_1.html)和文章页(如/news/10.html),若能正常显示则配置成功,若出现404错误,检查服务器规则是否正确加载。
常见问题解决
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 访问伪静态URL返回404 | 服务器未加载规则 | 检查.htaccess或nginx.conf语法,重启服务器 |
| 文章页无法打开 | 文档命名规则与规则冲突 | 统一后台规则与服务器规则中的变量(如{aid}与$2对应) |
| 首页伪静态失效 | 首页无需规则,直接访问根目录 | 确保首页生成静态HTML(生成HTML→更新首页) |
相关问答FAQs
Q1:开启伪静态后,后台“更新系统”提示“无法打开指定文件”?
A:这是因为伪静态规则将所有请求重定向至index.php,导致文件路径解析异常,需在服务器规则中排除后台目录,例如在Apache的.htaccess中添加:
RewriteCond %{REQUEST_URI} !/dede/ # dede为后台目录
RewriteCond %{REQUEST_URI} !/special/ # 特殊目录(如会员中心)
Q2:如何实现伪静态URL中的拼音目录(如/news/list_1.html改为/xinwen/list_1.html)?
A:需先在栏目设置中将“目录”改为拼音(如“新闻”设为“xinwen”),然后在服务器规则中调整匹配表达式,例如Nginx规则改为:
rewrite "^([a-z]+)/list_([0-9]+)\.html$" /index.php?tid=$2&PageNo=$3 last;
同时确保后台栏目目录名称与规则中的([a-z]+)匹配。
