什么是伪静态?
伪静态(URL Rewriting)是指将动态的 URL 地址(如 index.php?m=list&c=index&a=show&catid=1&id=2)重写成静态的、更美观、更利于 SEO 的形式(如 /article/1/2.html),它通过服务器模块(如 Apache 的 mod_rewrite)在后台进行地址重写,对用户和搜索引擎来说,看到的是静态地址,但实际访问的仍然是动态页面。

为什么 DedeCMS 需要 .htaccess?
DedeCMS 的伪静态功能需要服务器端的支持。.htaccess 文件是 Apache 服务器的一个配置文件,它允许你在不修改主服务器配置文件(如 httpd.conf)的情况下,对特定目录进行配置,我们将伪静态规则写入 .htaccess 文件,并放在 DedeCMS 的根目录下,即可实现伪静态效果。
第一步:开启 Apache 的 mod_rewrite 模块
在配置 .htaccess 之前,请确保你的 Apache 服务器已经开启了 mod_rewrite 模块。
-
检查是否开启:
- 在服务器上创建一个
phpinfo.php文件,内容为<?php phpinfo(); ?>,然后在浏览器中访问。 - 搜索
Loaded Modules,查看列表中是否有mod_rewrite,如果有,说明已开启。
- 在服务器上创建一个
-
如何开启:
(图片来源网络,侵删)- Windows 系统:找到 Apache 的配置文件
httpd.conf(通常在Apache\conf\目录下),搜索#LoadModule rewrite_module modules/mod_rewrite.so,将开头的 去掉。 - Linux 系统:编辑
httpd.conf文件,同样找到并取消注释LoadModule rewrite_module modules/mod_rewrite.so这一行。 - 重要:修改
httpd.conf后,需要重启 Apache 服务才能生效。
- Windows 系统:找到 Apache 的配置文件
第二步:创建和配置 .htaccess 文件
在你的 DedeCMS 网站根目录(即包含 index.php, dede, templets 等文件夹的目录)下,创建一个名为 .htaccess 的文件。
注意:
- 文件名是
.htaccess,前面有一个点,没有后缀名。 - 如果使用 Windows 资源管理器无法创建,可以先用记事本保存为
htaccess.txt,然后通过 FTP 或 SSH 客户端(如 FileZilla)将其重命名为.htaccess。
第三步:选择合适的 .htaccess 规则
以下提供了几种最常用和最稳定的 DedeCMS 伪静态规则,请根据你的 DedeCMS 版本和安装目录选择。
适用于 DedeCMS 5.7 及以上版本(默认目录结构)
这是最常见的情况,将网站根目录作为默认目录。

# 将 RewriteEngine 模式打开
RewriteEngine On
# 如果请求的是真实存在的文件或目录,则直接访问
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# DedeCMS 5.7 伪静态规则
RewriteRule ^index\.html$ /index.php [L]
RewriteRule ^list-([0-9]+)\.html$ /plus/list.php?tid=$1 [L]
RewriteRule ^list-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /plus/list.php?tid=$1&totalresult=$2&PageNo=$3 [L]
RewriteRule ^view-([0-9]+)-([0-9]+)\.html$ /plus/view.php?arcID=$1&pageno=$2 [L]
RewriteRule ^category\.html$ /plus/category\.php [L]
RewriteRule ^category-([0-9]+)-([0-9]+)\.html$ /plus/category\.php?tid=$1&PageNo=$2 [L]
使用说明:
- 将以上代码完整复制到你的
.htaccess文件中。 - 保存文件并上传到网站根目录。
- 登录 DedeCMS 后台,进入“系统” -> “系统基本参数” -> “核心设置”。
- 找到“是否使用伪静态”选项,将其设置为“是”。
- 保存设置,然后清除缓存。
适用于 DedeCMS 安装在子目录
如果你的 DedeCMS 安装在子目录,http://www.yourdomain.com/dede/。
# 将 RewriteEngine 模式打开
RewriteEngine On
# 如果请求的是真实存在的文件或目录,则直接访问
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# DedeCMS 5.7 伪静态规则 (子目录版)
# 注意:在规则前加上子目录名,如 /dede/
RewriteRule ^dede/index\.html$ /dede/index.php [L]
RewriteRule ^dede/list-([0-9]+)\.html$ /dede/plus/list.php?tid=$1 [L]
RewriteRule ^dede/list-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /dede/plus/list.php?tid=$1&totalresult=$2&PageNo=$3 [L]
RewriteRule ^dede/view-([0-9]+)-([0-9]+)\.html$ /dede/plus/view.php?arcID=$1&pageno=$2 [L]
RewriteRule ^dede/category\.html$ /dede/plus/category\.php [L]
RewriteRule ^dede/category-([0-9]+)-([0-9]+)\.html$ /dede/plus/category\.php?tid=$1&PageNo=$2 [L]
使用说明:
- 将以上代码复制到
.htaccess文件中。 - 关键:确保所有规则中的路径都包含你的子目录名(如
dede/)。 - 将此
.htaccess文件放在网站根目录,而不是dede子目录内。 - 后台设置和清除缓存的步骤与方案一相同。
适用于 DedeCMS 5.6 及更早版本
这些版本的规则可能略有不同。
# 将 RewriteEngine 模式打开
RewriteEngine On
# 如果请求的是真实存在的文件或目录,则直接访问
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# DedeCMS 5.6 及更早版本伪静态规则
RewriteRule ^index\.html$ /index.php [L]
RewriteRule ^plus/list-([0-9]+)\.html$ /plus/list.php?tid=$1 [L]
RewriteRule ^plus/list-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /plus/list.php?tid=$1&totalresult=$2&PageNo=$3 [L]
RewriteRule ^plus/view-([0-9]+)-([0-9]+)\.html$ /plus/view.php?arcID=$1&pageno=$2 [L]
第四步:后台设置
无论使用哪个方案,最后一步都是在 DedeCMS 后台开启伪静态功能。
- 登录 DedeCMS 后台。
- 菜单栏点击 “系统” -> “系统基本参数”。
- 在左侧选择 “核心设置”。
- 找到 “是否使用伪静态” 这一项,将其值修改为 “是”。
- 点击 “保存更改”。
- 建议在后台的 “系统” -> “一键更新网站” 中,选择 “更新HTML” 和 “更新文档HTML”,以生成静态页面,让伪静态规则更好地工作。
常见问题排查 (FAQ)
Q1: 配置后页面打不开了,出现 404 错误。 A1:
- 首要检查:确认 Apache 的
mod_rewrite模块已开启并重启了服务。 - 目录权限:确保
.htaccess文件在正确的目录(网站根目录),并且服务器有读取权限(权限通常设为644)。 - 路径问题:如果你使用了子目录,请仔细检查
.htaccess规则中的路径是否正确。 - 规则冲突:检查
.htaccess文件中是否有其他错误的 Rewrite 规则。 - 临时解决:可以将
.htaccess文件重命名(如.htaccess.bak)来临时禁用伪静态,看看网站是否能恢复正常。
Q2: 伪静态开启后,后台登录不了或页面样式乱了。 A2:
-
这通常是因为后台的某些请求也被伪静态规则影响了。
-
解决方法:在
.htaccess文件的开头,添加以下规则来排除后台目录:# 排除后台目录,防止伪静态影响后台访问 RewriteCond %{REQUEST_URI} ^/dede/ # 将 /dede/ 替换成你的后台目录名 RewriteRule .* - [L] # 然后再是你的其他伪静态规则... RewriteEngine On ...
Q3: 我用的是 Nginx 服务器,这个文件有用吗?
A3: 没有用。.htaccess 是 Apache 服务器的配置文件,Nginx 服务器需要使用 nginx.conf 配置文件来实现伪静态,你需要将 DedeCMS 的伪静态规则转换为 Nginx 的 rewrite 规则,并添加到对应站点的 server 块中,DedeCMS 官网或网上可以找到 Nginx 的伪静态规则。
希望这份详细的指南能帮助你成功配置 DedeCMS 的伪静态!
