Tag 伪静态的核心思想是:将形如 tags.php?tag=织梦CMS 的动态链接,转换为形如 tags/织梦CMS.html 这样的静态化链接,这不仅能提升用户体验,对搜索引擎也更友好。

(图片来源网络,侵删)
整个过程主要分为两大步:
- 后台配置:告诉 DedeCMS 要开启 Tag 伪静态,并设置好伪静态的规则格式。
- 服务器配置:告诉 Web 服务器(如 Apache 或 Nginx)如何将用户请求的静态 URL 重写为真实的动态文件
tags.php。
第一步:DedeCMS 后台配置
这是最关键的一步,决定了你网站 Tag 链接的基础格式。
-
登录 DedeCMS 后台。
-
进入 “系统” -> “系统基本参数” -> “核心设置”。
(图片来源网络,侵删) -
找到 “是否使用伪静态” 这个选项,将其设置为 “是”。
-
继续在同一页面(核心设置)向下滚动,找到 “标签命名规则” 这个选项。
- 默认值:
{tag}/{page}.html - 修改为:
tags/{tag}.html或者tag/{tag}.html或者t/{tag}.html等。 - 推荐:
tags/{tag}.html,这个格式清晰明了,也方便后续在服务器上配置规则。 - 注意:这里的
{tag}是变量,代表标签名称;{page}是分页变量,如果你不希望分页也伪静态,可以只保留{tag},我们这里配置为tags/{tag}.html,它同样会自动处理分页,tags/织梦CMS/2.html。
- 默认值:
-
保存设置。
完成这一步后,你在网站前台点击任意一个标签链接,会发现 URL 已经变成了你设定的格式(如 tags/织梦CMS.html),此时直接访问这个链接很可能会出现 404 错误,因为服务器还不认识这个格式,这就需要第二步的配置。

(图片来源网络,侵删)
第二步:服务器伪静态规则配置
你需要根据你的服务器环境(Apache 或 Nginx)来选择对应的规则。
Apache 服务器 (.htaccess 文件)
这是最常见的情况,特别是使用虚拟主机的用户。
-
找到
.htaccess文件:- 通常位于你的网站根目录(
/public_html/或/wwwroot/)。 - 如果没有,你需要新建一个文件,命名为
.htaccess(注意前面的点),然后上传到根目录。
- 通常位于你的网站根目录(
-
编辑
.htaccess文件:- 将以下规则添加到文件的末尾,或者如果已有
RewriteEngine On,则直接追加规则即可。
# 开启重写引擎 RewriteEngine On # 将 tags/标签名.html 的请求重写到 tags.php RewriteRule ^tags/([^/]*).html$ tags.php?tag=$1 # 将 tags/标签名/分页.html 的请求重写到 tags.php RewriteRule ^tags/([^/]*)/([0-9]+).html$ tags.php?tag=$1&page=$2
- 将以下规则添加到文件的末尾,或者如果已有
-
保存文件,并确保
.htaccess文件的权限是644。
规则解释:
^tags/([^/]*).html$:^:匹配字符串的开始。tags/:匹配tags/这个固定字符。([^/]*):这是一个捕获组,[]表示匹配其中的任意一个字符, 是排除字符, 表示匹配0次或多次,简单说,就是匹配tags/和.html之间的所有字符(除了 ),并将这部分内容捕获为变量$1。.html$:匹配.html这个固定字符串, 表示匹配字符串的结尾。
tags.php?tag=$1:将匹配到的结果(即标签名)作为tag参数传递给tags.php。- 第二行规则是处理 Tag 分页的,原理相同,只是多了一个捕获分页码
$2。
Nginx 服务器 (nginx.conf 文件)
如果你使用的是 Nginx 服务器(如云服务器、VPS),你需要修改 Nginx 的配置文件。
-
找到 Nginx 配置文件:
- 通常是
nginx.conf,或者你站点配置文件,位于/etc/nginx/sites-available/或类似目录下。
- 通常是
-
编辑配置文件:
- 在
server { ... }块中,找到location部分,添加如下规则,建议添加在处理其他location的后面。
# 将 tags/标签名.html 的请求重写到 tags.php location ~* ^tags/([^/]+)\.html$ { rewrite ^/tags/([^/]+)\.html$ /tags.php?tag=$1 last; } # 将 tags/标签名/分页.html 的请求重写到 tags.php location ~* ^tags/([^/]+)/([0-9]+)\.html$ { rewrite ^/tags/([^/]+)/([0-9]+)\.html$ /tags.php?tag=$1&page=$2 last; } - 在
-
保存文件,然后执行命令使配置生效:
- 如果是直接修改了
nginx.conf:sudo nginx -s reload - 如果是修改了站点配置文件:
sudo systemctl reload nginx或sudo service nginx reload
- 如果是直接修改了
规则解释:
location ~* ^tags/([^/]+)\.html$:- 表示不区分大小写的正则表达式匹配。
^tags/([^/]+)\.html$:与 Apache 规则类似,([^/]+)是一个更严格的写法,表示匹配一个或多个非 的字符,并捕获为变量。
rewrite ... last;:rewrite:执行重写指令。^/tags/([^/]+)\.html$:匹配的 URL 模式(这里的 是可选的,取决于你的location匹配方式)。/tags.php?tag=$1:重写后的目标。last:表示停止处理当前的rewrite规则集,并搜索与重写后的 URL 匹配的新location。break则是停止处理当前location。
常见问题排查 (FAQ)
-
配置后还是 404 错误?
- 检查后台设置:确认“是否使用伪静态”和“标签命名规则”是否已正确保存。
- 检查服务器规则:确保
.htaccess或 Nginx 配置文件中的规则拼写正确,并且已保存并生效。 - 检查文件权限:确保
.htaccess文件对 Web 服务器是可读的。 - 服务器模块:对于 Apache,确保
mod_rewrite模块已启用,对于 Nginx,确保rewrite模块已编译。
-
首页或其他页面的 Tag 链接没变?
- 这很正常,伪静态规则只对符合
tags/...格式的 URL 生效,首页上的 Tag 链接可能需要你手动清理浏览器缓存,或者重新生成一下 HTML。
- 这很正常,伪静态规则只对符合
-
Tag 首页(tags.php)也想伪静态怎么办?
- 你可以将
tags.php首页也重定向到tags.html或index.html,在 Apache 的.htaccess中添加:RewriteRule ^tags\.html$ tags.php [L]
- 但通常直接访问
tags.php也是可以的,伪静态主要针对的是带参数的标签详情页。
- 你可以将
-
URL 中包含特殊字符怎么办?
- DedeCMS 在生成 Tag 链接时,会自动将中文和特殊字符进行 URL 编码(如空格变成
%20,中文变成%E7%BB%87%E6%A2%A6),服务器规则中的([^/]*)或([^/]+)可以正确处理这些编码后的字符,所以无需额外配置。
- DedeCMS 在生成 Tag 链接时,会自动将中文和特殊字符进行 URL 编码(如空格变成
| 步骤 | 操作 | 关键点 |
|---|---|---|
| 后台配置 | 系统 -> 核心设置 -> “是否使用伪静态”设为“是” “标签命名规则”设为 tags/{tag}.html |
这是基础,决定了 URL 的格式。 |
| 服务器配置 | Apache: 在根目录 .htaccess 中添加 RewriteRule。Nginx: 在 server 块中添加 location 和 rewrite 规则。 |
这是核心,让服务器能理解并处理伪静态 URL。 |
按照以上步骤操作,你的 DedeCMS 网站 Tag 伪静态就能成功配置了。
