- 开启 Apache 的伪静态模块:确保 Apache 支持
.htaccess文件。 - 配置 DedeCMS 后台:在 DedeCMS 管理界面中开启伪静态功能。
- 创建
.htaccess文件:在网站根目录下创建并配置规则文件,告诉 Apache 如何重写 URL。
第一步:开启 Apache 的 mod_rewrite 模块
这是伪静态化的基础,mod_rewrite 是 Apache 的一个强大的 URL 重写引擎。

-
检查模块是否已加载:
- 在服务器上,找到 Apache 的配置文件
httpd.conf(通常位于/etc/httpd/或/usr/local/apache2/conf/等目录,具体路径取决于你的安装方式)。 - 在文件中搜索
LoadModule rewrite_module,如果这行代码没有被注释(即行首没有 ),说明模块已加载,如果被注释了,请去掉 。#LoadModule rewrite_module modules/mod_rewrite.so <-- 注释状态 LoadModule rewrite_module modules/mod_rewrite.so <-- 取消注释
- 保存
httpd.conf文件。
- 在服务器上,找到 Apache 的配置文件
-
配置虚拟主机目录权限:
-
在
httpd.conf中找到你的网站虚拟主机配置部分(<VirtualHost>标签内)。 -
找到
<Directory>标签,确保它允许覆盖 (AllowOverride),这是让.htaccess文件生效的关键。
(图片来源网络,侵删)<VirtualHost *:80> # ... 其他配置 ... DocumentRoot "/path/to/your/website" # 你的网站根目录 ServerName yourdomain.com <Directory "/path/to/your/website"> Options Indexes FollowSymLinks AllowOverride All <!-- 确保这里是 All --> Require all granted </Directory> # ... 其他配置 ... </VirtualHost> -
AllowOverride All表示允许该目录下的.htaccess文件覆盖所有的 Apache 配置。
-
-
重启 Apache 服务:
- 保存
httpd.conf文件后,必须重启 Apache 服务使配置生效。# 在 Linux 系统上 sudo systemctl restart httpd # CentOS 7+/RHEL 7+/Fedora # 或者 sudo service httpd restart # CentOS 6/RHEL 6 # 或者 sudo /etc/init.d/apache2 restart # Debian/Ubuntu
- 保存
第二步:在 DedeCMS 后台开启伪静态
- 登录 DedeCMS 后台:使用管理员账号登录你的网站后台。
- 进入系统设置:在左侧菜单中,找到并点击 “系统” -> “系统基本参数”。
- 设置伪静态开关:
- 在打开的页面中,找到 “是否使用伪静态” 选项。
- 将其值从 “不使用” 修改为 “是”。
- 重要:仔细检查下方的 “栏目列表”、“文章列表”、页” 等选项的 URL 规则是否是你想要的格式(如
plus/list-1-1.html),DedeCMS 默认提供了一些规则,通常可以直接使用。
- 保存设置:点击页面底部的“保存”按钮。
第三步:创建并配置 .htaccess 文件
这是最关键的一步,它定义了 URL 重写的具体规则。
-
获取规则文件:
- DedeCMS 官方程序包中已经包含了
.htaccess文件,但通常被命名为htaccess.txt。 - 请在你的 DedeCMS 程序根目录(
dedecms/)下找到这个htaccess.txt文件。
- DedeCMS 官方程序包中已经包含了
-
修改规则文件:
-
用文本编辑器(如 Notepad++, VS Code, Sublime Text 等)打开
htaccess.txt。 -
重要:检查文件开头的
RewriteBase指令,如果你的网站是部署在 Web 根目录(如http://yourdomain.com/),则RewriteBase /是正确的,如果你的网站是部署在子目录(如http://yourdomain.com/mycms/),则需要修改为RewriteBase /mycms/。# 如果网站在根目录 RewriteBase / # 如果网站在子目录 /dedecms/ 下 # RewriteBase /dedecms/
-
通常如下(这是 DedeCMS 5.7 版本的经典规则):
<IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteBase / # 绑定域名到子目录 # RewriteCond %{HTTP_HOST} ^(^.*)$ # RewriteCond %{REQUEST_URI} !^/subdir/ # RewriteCond %{REQUEST_FILENAME} !-f # RewriteCond %{REQUEST_FILENAME} !-d # RewriteRule ^(.*)$ /subdir/$1 [L] # 绑定域名到子目录结束 # 将 RewriteEngine 模式打开 RewriteEngine On # 修改以下语句中的 /dedecms 为你的DedeCms安装目录: # RewriteBase / # Rewrite 系统规则请勿修改 RewriteRule ^index\.html$ /index\.php [I] RewriteRule ^plus/list-([0-9]+)\.html$ /plus/list\.php\?tid=$1 [I] RewriteRule ^plus/list-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /plus/list\.php\?tid=$1&totalresult=$2&PageNo=$3 [I] RewriteRule ^plus/view-([0-9]+)-([0-9]+)\.html$ /plus/view\.php\?arcID=$1&pageno=$2 [I] RewriteRule ^plus/view-([0-9]+)\.html$ /plus/view\.php\?arcID=$1 [I] RewriteRule ^([a-z0-9\-]+)\.html$ /plus/view\.php?aid=$1 [I] RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)\.html$ /plus/$2\.php\?pathinfo=$1 [I] RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)-([a-z0-9\-]+)\.html$ /plus/$2\.php\?pathinfo=$1/$3 [I] RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)\.php$ /plus/$2\.php\?pathinfo=$1/$3/$4 [I] RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)\.php$ /plus/$2\.php\?pathinfo=$1/$3/$4/$5 [I] RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)\.php$ /plus/$2\.php\?pathinfo=$1/$3/$4/$5/$6 [I] RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)\.php$ /plus/$2\.php\?pathinfo=$1/$3/$4/$5/$6/$7 [I] RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)\.php$ /plus/$2\.php\?pathinfo=$1/$3/$4/$5/$6/$7/$8 [I] RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)\.php$ /plus/$2\.php\?pathinfo=$1/$3/$4/$5/$6/$7/$8/$9 [I] RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)\.php$ /plus/$2\.php\?pathinfo=$1/$3/$4/$5/$6/$7/$8/$9/$10 [I] </IfModule> -
注意:
[I]标志在 Apache 2.4+ 版本中已不推荐使用,它用于忽略大小写,在 Apache 2.4+ 中,你可以使用[NC]标志来达到同样的效果,或者直接使用不区分大小写的正则表达式,但为了兼容性,很多模板依然保留[I],它在大多数环境下也能正常工作。
-
-
上传文件并重命名:
- 将修改好的
htaccess.txt文件通过 FTP 或其他方式上传到你的网站根目录(与index.php文件同级)。 - 上传成功后,将其重命名为
.htaccess,这个文件名是隐藏文件,在某些 FTP 工具中可能需要设置才能看到。
- 将修改好的
第四步:验证和测试
完成以上所有步骤后,你的伪静态应该就已经配置成功了。
- 清除缓存:登录 DedeCMS 后台,进入 “系统” -> “一键更新网站” -> “更新HTML”,选择“更新栏目页”和“更新文档页”,然后点击“开始更新”,这会生成静态 HTML 文件,并确保链接正确。
- 访问测试:
- 在浏览器中访问你的网站首页。
- 尝试点击一个栏目,观察浏览器地址栏的 URL 是否已经变成了
plus/list-x.html的形式。 - 尝试点击一篇文章,观察 URL 是否变成了
plus/view-x.html的形式。 - 如果点击后能正常打开页面,说明伪静态配置成功。
常见问题排查
如果配置后出现 404 Not Found 错误,请检查以下几点:
.htaccess文件位置错误:确保.htaccess文件在网站根目录。AllowOverride设置错误:回到第一步,检查httpd.conf中对应目录的AllowOverride是否为All。mod_rewrite模块未加载:确保LoadModule rewrite_module ...行没有被注释。RewriteBase路径错误:如果你的网站在子目录,RewriteBase必须正确设置。- 文件权限问题:确保 Apache 进程(通常是
www-data或apache用户)对.htaccess文件和网站目录有读取和执行权限。 - URL 规则不匹配:检查后台设置的 URL 规则是否与
.htaccess文件中的RewriteRule完全一致。 - 其他 Apache 插件冲突:某些安全插件或缓存插件可能会干扰 URL 重写,尝试暂时禁用它们进行测试。
按照以上步骤一步步操作,你就可以成功地为 DedeCMS 在 Apache 服务器上配置好伪静态了。
