“伪静态”并不是真正的静态页面(.html),而是通过服务器上的配置(如 Apache 的 .htaccess 或 Nginx 的 rewrite 规则),将动态的 URL(如 plus/list.php?tid=1)重写成一个看起来像静态的 URL(如 category/1.html 或 news/)。

这样做的好处是:
- SEO 优化:URL 结构更清晰、更友好,搜索引擎更容易抓取和理解。
- 用户体验:用户看到简洁的 URL,信任度更高。
- 隐藏技术细节:不暴露服务器使用的脚本语言(如 .php)。
核心步骤:设置栏目伪静态
整个过程分为三个关键部分,缺一不可:
- 后台设置:告诉 DedeCMS 你要使用伪静态规则。
- 服务器配置:在服务器上配置重写规则,实现 URL 的转换。
- 生成栏目:在后台重新生成栏目,使新的 URL 生效。
第一步:DedeCMS 后台设置
这是最基础的一步,开启 DedeCMS 的伪静态功能。
- 登录您的 DedeCMS 后台。
- 进入 系统 -> 系统基本参数 -> 核心设置。
- 找到 “是否使用伪静态” 选项,将其设置为 “是”。
- 点击 “确定” 保存。
注意:这里只是开启功能,具体如何生成伪静态 URL,还需要在第二步和第三步中配置。

第二步:服务器配置(这是最关键的一步)
你需要根据你的服务器环境(Apache 或 Nginx)来添加相应的配置文件。
Apache 服务器
Apache 服务器通常使用 .htaccess 文件来管理伪静态规则。
-
找到
.htaccess文件:- 这个文件通常位于您的网站根目录()下。
- 如果没有,请创建一个,文件名为
.htaccess(注意前面的点)。
-
添加 DedeCMS 栏目伪静态规则: 将以下代码复制并粘贴到您的
.htaccess文件中。
(图片来源网络,侵删)# DedeCMS 伪静态规则 # 如果目录存在则直接访问目录文件,不存在则继续往下执行 RewriteCond %{REQUEST_FILENAME} !-d # 如果文件存在则直接访问文件,不存在则继续往下执行 RewriteCond %{REQUEST_FILENAME} !-f # Rewrite 规则开始 RewriteRule ^category/list-([0-9]+)\.html$ /plus/list.php?tid=$1 [L] RewriteRule ^category/list-([0-9]+)-([0-9]+)\.html$ /plus/list.php?tid=$1&PageNo=$2 [L] RewriteRule ^category/([0-9]+)\.html$ /plus/list.php?tid=$1 [L] RewriteRule ^category/([0-9]+)-([0-9]+)\.html$ /plus/list.php?tid=$1&PageNo=$2 [L]规则解释:
^category/list-([0-9]+)\.html$:匹配形如category/list-1.html的 URL。^表示字符串开始。category/list-是固定的前缀。([0-9]+)是一个捕获组,匹配一个或多个数字(即栏目ID)。\.html$是固定的后缀。/plus/list.php?tid=$1将其重写为动态地址,$1代表前面捕获的第一个数字(栏目ID)。
PageNo=$2:用于分页,匹配形如category/list-1-2.html的 URL,$2代表页码。[L]:Last Rule,表示如果此规则匹配成功,则停止处理后续的 RewriteRule。
-
启用 Apache Rewrite 模块: 确保您的 Apache 服务器已经启用了
rewrite模块,虚拟主机商会默认开启,如果未开启,需要修改httpd.conf文件,取消LoadModule rewrite_module modules/mod_rewrite.so前面的 号,并重启 Apache。
Nginx 服务器
Nginx 服务器通常在网站的配置文件中(如 nginx.conf 或站点配置文件 your-site.conf)添加 rewrite 规则。
-
找到 Nginx 配置文件: 登录您的服务器,找到 Nginx 的站点配置文件,通常在
/etc/nginx/sites-available/目录下。 -
添加 DedeCMS 栏目伪静态规则: 在
server { ... }块中添加以下rewrite段落。server { # ... 其他配置 ... listen 80; server_name yourdomain.com; # DedeCMS 伪静态规则 rewrite "^/category/list-([0-9]+)\.html$" /plus/list.php?tid=$1 last; rewrite "^/category/list-([0-9]+)-([0-9]+)\.html$" /plus/list.php?tid=$1&PageNo=$2 last; rewrite "^/category/([0-9]+)\.html$" /plus/list.php?tid=$1 last; rewrite "^/category/([0-9]+)-([0-9]+)\.html$" /plus/list.php?tid=$1&PageNo=$2 last; # ... 其他配置 ... }规则解释:
^/category/list-([0-9]+)\.html$:匹配形如http://yourdomain.com/category/list-1.html的 URL。/plus/list.php?tid=$1:将其重写为动态地址。last:表示在本 location 中完成重写,并停止搜索其他 rewrite 规则,然后使用重写后的 URL 重新发起请求。
-
重载 Nginx 配置: 保存配置文件后,执行以下命令使配置生效。
nginx -s reload
第三步:自定义栏目URL(高级)
DedeCMS 允许你为每个栏目单独设置其伪静态的 URL 格式。
- 进入 “频道管理” 或 “栏目管理”。
- 点击某个栏目的 “更改” 或 “编辑” 按钮。
- 在栏目编辑页面,找到 “栏目名称” 下方的 “文件保存目录” 输入框。
- 这里就是自定义伪静态名称的关键!
- 默认情况:如果你留空,系统会使用默认的规则生成类似
category/1.html的URL。 - 自定义名称:你可以在这里输入你想要的名称。
- 输入
news,那么这个栏目的访问地址就会变成http://yourdomain.com/category/news.html。 - 输入
product,那么访问地址就是http://yourdomain.com/category/product.html。
- 输入
- 带层级:你还可以使用斜杠 来创建层级结构,例如输入
tech/web,那么URL就会是http://yourdomain.com/category/tech/web.html。
- 默认情况:如果你留空,系统会使用默认的规则生成类似
注意:
- 文件保存目录不要使用中文,建议使用英文、数字或下划线。
- 这个目录名称会直接成为 URL 的一部分,所以要确保其唯一性和友好性。
第四步:生成栏目和更新缓存
完成以上所有配置后,最后一步就是让 DedeCMS 生成新的页面。
- 在后台首页,找到 “生成” 菜单。
- 点击 “更新栏目HTML”。
- 你可以选择“仅更新栏目主页”或“更新所有栏目”,然后点击“开始执行”。
- 执行成功后,你的栏目链接就会变成你设置的伪静态格式了。
总结与排错
- 404 Not Found:这是最常见的错误,99% 的原因是 服务器配置(.htaccess 或 Nginx 配置)有误或未生效,请仔细检查你的规则是否写对,并确保服务器已加载了配置文件。
- URL 不变:如果你设置了伪静态,但刷新页面后 URL 还是动态的(如
plus/list.php?tid=1),请检查 第一步 的“是否使用伪静态”是否设置为“是”,并 重新生成栏目。 - 自定义目录不生效:检查 第三步 的“文件保存目录”是否填写正确,并确保没有与其他栏目重名,同样,需要重新生成栏目才能看到效果。
通过以上四个步骤,你就可以成功地为 DedeCMS 的所有栏目设置漂亮的伪静态名称了。
