伪静态的主要目的是为了提升搜索引擎优化(SEO)效果,让网址看起来更像静态的 HTML 页面(如 https://www.example.com/a/123.html),而不是动态的 PHP 页面(如 https://www.example.com/a.php?id=123),这有利于搜索引擎抓取,也可能在一定程度上提升用户体验和网站加载速度。

DedeCMS 5.5 的伪静态设置主要分为三步:
- 开启后台伪静态功能
- 配置服务器重写规则
- 设置文章命名规则
第一步:开启 DedeCMS 后台伪静态功能
这是最基础的一步,告诉 DedeCMS 系统你需要使用伪静态。
- 登录后台:使用你的管理员账号登录 DedeCMS 后台。
- 进入系统设置:在左侧菜单栏中,找到并点击 “系统” -> “系统基本参数”。
- 选择核心设置:在“系统基本参数”页面中,点击顶部的 “核心设置” 选项卡。
- 修改“是否使用伪静态”:找到名为 “是否使用伪静态” 的选项,将其值从 “否” 修改为 “是”。
- 保存:页面最下方点击 “保存” 按钮。
完成这一步后,DedeCMS 在生成链接时,就会尝试使用你设置的静态规则格式。
第二步:配置服务器重写规则
这是最关键的一步,服务器需要知道如何将一个看似静态的 URL 请求,真正地“翻译”并指向到对应的动态 PHP 脚本,你需要根据你的服务器环境,选择对应的配置方法。

重要提示:在进行以下操作前,强烈建议先备份你的网站配置文件(如 .htaccess、nginx.conf 等),以防配置错误导致网站无法访问。
A. Apache 服务器 (使用 .htaccess 文件)
Apache 服务器是目前最常用的环境,DedeCMS 默认会在根目录下提供一个 httpd.ini.txt 文件,你需要将其重命名为 .htaccess,并确保内容正确。
-
重命名文件:
- 通过 FTP 或文件管理器,将网站根目录下的
httpd.ini.txt文件重命名为.htaccess。 - 如果你的网站根目录下已经有
.htaccess文件,请将httpd.ini.txt中的内容追加到现有文件的末尾,不要覆盖。
- 通过 FTP 或文件管理器,将网站根目录下的
-
检查
.htaccess文件内容: 确保.htaccess文件中包含以下 DedeCMS 5.5 的伪静态规则:# 如果网站安装在子目录,请将 RewriteBase / 修改为 RewriteBase /你的子目录 # RewriteBase /dedecms RewriteEngine On # 绑定域名到目录,如果不需要可以删除 # RewriteCond %{HTTP_HOST} ^(www.)?abc.com$ # RewriteRule ^(/|$) /site/ [L] # 伪静态规则开始 # 首页 RewriteRule ^index\.html$ /index.php [L] # 列表页 RewriteRule ^category/([0-9]+)/?$ /plus/list.php?tid=$1 [L] RewriteRule ^category/([0-9]+)_([0-9]+)/?$ /plus/list.php?tid=$1&totalresult=$2 [L] RewriteRule ^category/([0-9]+)_([0-9]+)_([0-9]+)/?$ /plus/list.php?tid=$1&PageNo=$3 [L] # 文章页 RewriteRule ^archives/([0-9]+)/?$ /plus/view.php?aid=$1 [L] RewriteRule ^archives/([0-9]+)_([0-9]+)/?$ /plus/view.php?aid=$1&pageno=$2 [L] # 标签页 RewriteRule ^tags\.html$ /tags.php [L] RewriteRule ^tags/([^/]+)/?$ /tags.php?/$1 [L] RewriteRule ^tags/([^/]+)/([0-9]+)/?$ /tags.php?/$1/$2 [L] # 搜索页 RewriteRule ^search\.html$ /search.php [L] # 自定义页面(单页面) RewriteRule ^custom/([0-9]+)/?$ /plus/view.php?aid=$1 [L] # 伪静态规则结束
B. Nginx 服务器 (修改 nginx.conf 文件)
Nginx 的配置通常在 nginx.conf 文件中,或者在网站的配置文件里(如 vhost/your_domain.conf)。

-
找到配置文件:登录你的服务器,找到 Nginx 的配置文件。
-
添加重写规则:在
server { ... }块中,添加以下规则:server { # ... 其他配置 ... # 绑定域名 server_name your_domain.com www.your_domain.com; # 网站根目录 root /path/to/your/website; # ... 其他配置 ... # 伪静态规则开始 location / { # 如果请求的文件或目录不存在,则进行重写 if (!-e $request_filename) { rewrite "^/index\.html$" /index.php last; rewrite "^/category/([0-9]+)/?$" /plus/list.php?tid=$1 last; rewrite "^/category/([0-9]+)_([0-9]+)/?$" /plus/list.php?tid=$1&totalresult=$2 last; rewrite "^/category/([0-9]+)_([0-9]+)_([0-9]+)/?$" /plus/list.php?tid=$1&PageNo=$3 last; rewrite "^/archives/([0-9]+)/?$" /plus/view.php?aid=$1 last; rewrite "^/archives/([0-9]+)_([0-9]+)/?$" /plus/view.php?aid=$1&pageno=$2 last; rewrite "^/tags\.html$" /tags.php last; rewrite "^/tags/([^/]+)/?$" /tags.php?/$1 last; rewrite "^/tags/([^/]+)/([0-9]+)/?$" /tags.php?/$1/$2 last; rewrite "^/search\.html$" /search.php last; rewrite "^/custom/([0-9]+)/?$" /plus/view.php?aid=$1 last; } } # ... 其他配置 ... } -
重启 Nginx:保存配置文件后,执行以下命令使配置生效:
# 对于 CentOS / RHEL systemctl restart nginx # 对于 Ubuntu / Debian systemctl restart nginx # 或者 service nginx restart
第三步:设置文章命名规则
这一步决定了你生成文章时,URL 的具体格式。
-
进入栏目管理:在后台,点击 “栏目管理”。
-
选择顶级栏目:点击你想要设置伪静态规则的顶级栏目(或者“高级选项”中选择了“使用栏目交叉”的栏目)。
-
修改文章命名规则:在栏目编辑页面,找到 “高级选项” -> “文章命名规则”。
-
输入规则:在输入框中填入你想要的命名规则,DedeCMS 提供了一些变量,
{typedir}:栏目目录{Y}:年{M}:月{D}:日{aid}:文章ID{cc}:自定义数字
推荐规则:为了实现
archives/文章ID.html这样的效果,你可以直接使用:{typedir}/{aid}.html如果你的栏目是“新闻”,那么生成的文章链接就是
https://www.example.com/news/123.html。 -
更新栏目缓存:设置完成后,点击 “确定” 保存,为了确保新规则生效,最好去 “系统” -> “一键更新网站” -> “更新栏目HTML” 和 “更新文档HTML”,重新生成一下栏目和文章。
常见问题与排查
-
设置后,打开页面出现 404 Not Found 错误
- 原因:服务器没有正确配置重写规则。
- 解决:
- Apache:检查
.htaccess文件是否存在,内容是否正确,文件权限是否正确(通常是 644)。 - Nginx:检查
nginx.conf配置是否正确,语法是否有误,并确保已经执行了nginx -s reload或重启了 Nginx。 - 虚拟主机环境:部分虚拟主机服务商需要你在其控制面板后台手动开启伪静态功能,并选择 DedeCMS 的模板,而不是直接上传
.htaccess。
- Apache:检查
-
后台更新缓存后,链接又变回了动态的
- 原因:可能是在“一键更新网站”时,选择了“仅动态浏览”,或者在栏目设置中没有保存新的命名规则。
- 解决:仔细检查第二步和第三步的设置,确保都已正确保存,然后重新更新网站。
-
首页和列表页正常,但文章页是 404
- 原因:通常是
.htaccess或 Nginx 规则中缺少了文章页的重写规则。 - 解决:对照上面的规则,检查你的配置文件中是否包含了
archives/...相关的重写规则。
- 原因:通常是
-
URL 中出现 或
&符号- 原因:伪静态规则没有生效,服务器没有将请求转发到 PHP 脚本。
- 解决:重新检查服务器配置,特别是 Nginx 的
if语句和rewrite规则的语法。
按照以上三个步骤仔细操作,你的 DedeCMS 5.5 网站就能成功配置伪静态了,祝你顺利!
