- 提升用户体验:URL 更美观、更符合用户习惯,易于记忆和分享。
- 利于 SEO:搜索引擎(如 Google、百度)更友好,静态化的 URL 更容易被收录和获得更好的排名。
- 增强安全性:隐藏了动态脚本(如
.php)的真实路径,增加了网站被攻击的难度。
第一步:开启 Apache 的 mod_rewrite 模块
在配置 .htaccess 之前,请确保你的 Apache 服务器已经开启了 mod_rewrite 模块,这是实现伪静态的前提。

(图片来源网络,侵删)
如何检查和开启:
-
检查是否已开启:
- 在服务器上创建一个
phpinfo.php文件,内容为<?php phpinfo(); ?>,然后在浏览器中访问。 - 在页面中搜索
Loaded Modules,查找是否存在mod_rewrite,如果有,说明已开启。
- 在服务器上创建一个
-
如何开启:
- Linux 系统:
- 打开 Apache 的配置文件,通常是
/etc/httpd/conf/httpd.conf或/etc/apache2/apache2.conf。 - 找到
LoadModule rewrite_module modules/mod_rewrite.so这一行。 - 如果前面有 号,请去掉它,然后保存文件。
- 重启 Apache 服务:
service httpd restart或systemctl restart apache2。
- 打开 Apache 的配置文件,通常是
- Windows 系统 (XAMPP/WampServer):
- 找到 Apache 的配置文件,通常在安装目录下的
conf/httpd.conf。 - 同样,找到并取消注释
LoadModule rewrite_module modules/mod_rewrite.so。 - 保存文件,然后重启 Apache。
- 找到 Apache 的配置文件,通常在安装目录下的
- Linux 系统:
第二步:配置 DedeCMS 后台
-
登录 DedeCMS 后台 (
/dede/)。
(图片来源网络,侵删) -
进入 系统 -> 系统基本参数。
-
在左侧菜单选择 核心设置。
-
找到以下几项并进行设置:
- 是否使用伪静态:选择 “是”。
- 重写规则文件名:保持默认的
rewrite.htm即可。 - 文件名称规则:这里可以根据你的需求自定义,例如设置为
{typedir}/{aid}.html。 - (可选) 列表命名规则:例如设置
list_{tid}_{page}.html。 - (可选) 文章命名规则:例如设置
{typedir}/{Y}/{M}{D}/{aid}.html。
-
点击 “保存更改”,后台会自动生成一个
rewrite.htm文件,这个文件包含了伪静态的规则。
(图片来源网络,侵删)
第三步:创建和配置 .htaccess 文件
这是最关键的一步,你需要将后台生成的 rewrite.htm 文件中的规则,复制到网站根目录下的 .htaccess 文件中。
创建 .htaccess 文件
在你的网站根目录(public_html 或 www 目录)下,创建一个名为 .htaccess 的文件。注意文件名前面有一个点。
获取并配置规则
-
直接复制后台生成的规则(推荐)
- 在你的 DedeCMS 网站根目录下,找到
rewrite.htm文件。 - 用文本编辑器(如 Notepad++, VS Code)打开它。
- 复制
<IfModule mod_rewrite.c>和</IfModule>之间的所有内容。 - 粘贴到你刚刚创建的
.htaccess文件中。 - 保存
.htaccess文件。
- 在你的 DedeCMS 网站根目录下,找到
-
使用通用规则模板
如果你找不到 rewrite.htm 文件,或者想手动配置,可以使用以下通用规则,请将下面的代码复制到你的 .htaccess 文件中。
# 开启重写引擎
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
# --- DedeCMS 5.7/5.8 通用规则 ---
# 绑定域名到子目录 (如果需要,取消下面一行的注释并修改域名和目录)
# RewriteCond %{HTTP_HOST} ^(www\.)?yourdomain\.com$ [NC]
# RewriteCond %{REQUEST_URI} !^/subdir/
# RewriteRule ^(.*)$ /subdir/$1 [L]
# 处理列表页
RewriteRule ^(.*)/list_([0-9]+)\.html$ $1/list.php?tid=$2
RewriteRule ^(.*)/list_([0-9]+)_([0-9]+)\.html$ $1/list.php?tid=$2&PageNo=$3
# 处理文章页
RewriteRule ^(.*)/view_([0-9]+)\.html$ $1/view.php?aid=$2
# 处理封面页
RewriteRule ^(.*)/category/([0-9]+)\.html$ $1/category.php/$2.html
# 处理搜索页
RewriteRule ^(.*)/search\.html$ $1/search.php
# 处理标签页
RewriteRule ^(.*)/tags\.html$ $1/tags.php
RewriteRule ^(.*)/tag/([^/]+)$ $1/tags.php?/$2
# 处理图片、软件等特殊模型
RewriteRule ^(.*)/special/([0-9]+)\.html$ $1/special.php?tid=$2
# 如果你的URL规则更复杂,{typedir}/{aid}.html,则需要更精细的规则
# RewriteRule ^([^/]+)/([0-9]+)\.html$ /plus/view.php?aid=$2
# RewriteRule ^([^/]+)/([0-9]+)_([0-9]+)\.html$ /plus/view.php?aid=$2&pageno=$3
# RewriteRule ^([^/]+)/list_([0-9]+)\.html$ /plus/list.php?tid=$2
# RewriteRule ^([^/]+)/list_([0-9]+)_([0-9]+)\.html$ /plus/list.php?tid=$2&PageNo=$3
</IfModule>
说明:
Options +FollowSymlinks -Multiviews:FollowSymlinks表示允许跟随符号链接,-Multiviews是为了避免 Apache 的多视图功能干扰重写规则。RewriteEngine On:开启重写引擎。RewriteRule:核心重写指令,格式为RewriteRule 模板 替换串 [标志]。- 模板:是你希望用户访问的 URL 样式(如
list_2_3.html)。 - 替换串:是服务器实际执行的动态文件(如
list.php?tid=2&PageNo=3)。 - 标志:
[L]表示如果这条规则匹配成功,则停止后续的规则匹配。
- 模板:是你希望用户访问的 URL 样式(如
第四步:设置目录权限
确保你的网站根目录(以及 uploads、data 等目录)具有正确的执行权限,对于 Linux 服务器,通常网站根目录的权限设置为 755,文件权限设置为 644。
# 设置目录权限为 755
find /path/to/your/website -type d -exec chmod 755 {} \;
# 设置文件权限为 644
find /path/to/your/website -type f -exec chmod 644 {} \;
第五步:更新缓存和测试
- 更新 DedeCMS 缓存:在 DedeCMS 后台,进入 系统 -> 性能优化 -> 更新系统缓存,点击执行。
- 生成 HTML:进入 主页生成 或 栏目管理,重新生成你想要伪静态的页面列表和文章。
- 测试:
- 访问你的网站首页,看看是否正常。
- 点击一个栏目列表页,观察 URL 是否变成了
list_1.html或类似的形式,并且内容能正常显示。 - 点击一篇文章,观察 URL 是否变成了
view_123.html的形式,并且内容能正常显示。 - 如果出现 404 Not Found 错误,请检查:
- Apache 的
mod_rewrite模块是否开启。 .htaccess文件是否在网站根目录。.htaccess文件中的规则是否正确。- 网站目录权限是否正确。
- Apache 的
常见问题与解决方案
-
问题1:出现 404 Not Found 错误。
- 原因:最常见的原因是
mod_rewrite模块未开启,或者.htaccess文件中的规则有误。 - 解决:重新检查第一步和第三步。
- 原因:最常见的原因是
-
问题2:首页正常,但栏目页和文章页 404。
- 原因:
.htaccess文件中的规则不完整,或者没有在后台生成对应的页面。 - 解决:确保你的
.htaccess规则覆盖了你所有需要的页面类型(列表、文章等),并重新生成页面。
- 原因:
-
问题3:网站打开速度变慢。
- 原因:
.htaccess规则过于复杂或有冲突,导致 Apache 每次请求都要进行大量匹配。 - 解决:检查并简化
.htaccess规则,移除不必要的规则。
- 原因:
-
问题4:图片、CSS、JS 等静态文件无法加载。
- 原因:
.htaccess规则错误地匹配了静态文件的请求。 - 解决:在
.htaccess文件的开头添加以下规则,以排除对静态文件的重写:<IfModule mod_rewrite.c> RewriteEngine On # 排除对静态文件的重写 RewriteCond %{REQUEST_URI} !\.(php|html|htm|jpg|jpeg|gif|png|css|js|ico)$ [NC] RewriteCond %{REQUEST_URI} !^/dede/ [NC] # 排除后台目录 RewriteCond %{REQUEST_URI} !^/special/ [NC] # 排除特定目录(如果需要) # ... 你的其他 RewriteRule 规则 ... </IfModule>
- 原因:
遵循以上步骤,你就可以成功地为你的 DedeCMS 网站配置好伪静态了。
