dede tag伪静态规则如何正确配置?

99ANYc3cd6
预计阅读时长 14 分钟
位置: 首页 DEDE建站 正文

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

dede tag伪静态规则
(图片来源网络,侵删)

整个过程主要分为两大步

  1. 后台配置:告诉 DedeCMS 要开启 Tag 伪静态,并设置好伪静态的规则格式。
  2. 服务器配置:告诉 Web 服务器(如 Apache 或 Nginx)如何将用户请求的静态 URL 重写为真实的动态文件 tags.php

第一步:DedeCMS 后台配置

这是最关键的一步,决定了你网站 Tag 链接的基础格式。

  1. 登录 DedeCMS 后台

  2. 进入 “系统” -> “系统基本参数” -> “核心设置”

    dede tag伪静态规则
    (图片来源网络,侵删)
  3. 找到 “是否使用伪静态” 这个选项,将其设置为 “是”

  4. 继续在同一页面(核心设置)向下滚动,找到 “标签命名规则” 这个选项。

    • 默认值{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
  5. 保存设置

完成这一步后,你在网站前台点击任意一个标签链接,会发现 URL 已经变成了你设定的格式(如 tags/织梦CMS.html),此时直接访问这个链接很可能会出现 404 错误,因为服务器还不认识这个格式,这就需要第二步的配置。

dede tag伪静态规则
(图片来源网络,侵删)

第二步:服务器伪静态规则配置

你需要根据你的服务器环境(Apache 或 Nginx)来选择对应的规则。

Apache 服务器 (.htaccess 文件)

这是最常见的情况,特别是使用虚拟主机的用户。

  1. 找到 .htaccess 文件

    • 通常位于你的网站根目录(/public_html//wwwroot/)。
    • 如果没有,你需要新建一个文件,命名为 .htaccess(注意前面的点),然后上传到根目录。
  2. 编辑 .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
  3. 保存文件,并确保 .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 的配置文件。

  1. 找到 Nginx 配置文件

    • 通常是 nginx.conf,或者你站点配置文件,位于 /etc/nginx/sites-available/ 或类似目录下。
  2. 编辑配置文件

    • 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;
    }
  3. 保存文件,然后执行命令使配置生效:

    • 如果是直接修改了 nginx.confsudo nginx -s reload
    • 如果是修改了站点配置文件:sudo systemctl reload nginxsudo service nginx reload

规则解释

  • location ~* ^tags/([^/]+)\.html$
    • 表示不区分大小写的正则表达式匹配。
    • ^tags/([^/]+)\.html$:与 Apache 规则类似,([^/]+) 是一个更严格的写法,表示匹配一个或多个非 的字符,并捕获为变量。
  • rewrite ... last;
    • rewrite:执行重写指令。
    • ^/tags/([^/]+)\.html$:匹配的 URL 模式(这里的 是可选的,取决于你的 location 匹配方式)。
    • /tags.php?tag=$1:重写后的目标。
    • last:表示停止处理当前的 rewrite 规则集,并搜索与重写后的 URL 匹配的新 locationbreak 则是停止处理当前 location

常见问题排查 (FAQ)

  1. 配置后还是 404 错误?

    • 检查后台设置:确认“是否使用伪静态”和“标签命名规则”是否已正确保存。
    • 检查服务器规则:确保 .htaccess 或 Nginx 配置文件中的规则拼写正确,并且已保存并生效。
    • 检查文件权限:确保 .htaccess 文件对 Web 服务器是可读的。
    • 服务器模块:对于 Apache,确保 mod_rewrite 模块已启用,对于 Nginx,确保 rewrite 模块已编译。
  2. 首页或其他页面的 Tag 链接没变?

    • 这很正常,伪静态规则只对符合 tags/... 格式的 URL 生效,首页上的 Tag 链接可能需要你手动清理浏览器缓存,或者重新生成一下 HTML。
  3. Tag 首页(tags.php)也想伪静态怎么办?

    • 你可以将 tags.php 首页也重定向到 tags.htmlindex.html,在 Apache 的 .htaccess 中添加:
      RewriteRule ^tags\.html$ tags.php [L]
    • 但通常直接访问 tags.php 也是可以的,伪静态主要针对的是带参数的标签详情页。
  4. URL 中包含特殊字符怎么办?

    • DedeCMS 在生成 Tag 链接时,会自动将中文和特殊字符进行 URL 编码(如空格变成 %20,中文变成 %E7%BB%87%E6%A2%A6),服务器规则中的 ([^/]*)([^/]+) 可以正确处理这些编码后的字符,所以无需额外配置。
步骤 操作 关键点
后台配置 系统 -> 核心设置 -> “是否使用伪静态”设为“是”
“标签命名规则”设为 tags/{tag}.html
这是基础,决定了 URL 的格式。
服务器配置 Apache: 在根目录 .htaccess 中添加 RewriteRule
Nginx: 在 server 块中添加 locationrewrite 规则。
这是核心,让服务器能理解并处理伪静态 URL。

按照以上步骤操作,你的 DedeCMS 网站 Tag 伪静态就能成功配置了。

-- 展开阅读全文 --
头像
dede如何实现tga图片上传后自动消失?
« 上一篇 今天
C语言入门经典(第4版)适合零基础吗?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]