找回密码
 我要入驻
搜索
热搜: 活动 交友 discuz
查看: 248|回复: 0

[免费插件] TAG伪静态功能discuz x5的插件

[复制链接]

26

主题

1

回帖

27

积分

管理员

积分
27
QQ
发表于 2026-8-17 14:27:11 | 显示全部楼层 |阅读模式
这插件适合discuz x5版本的,TAG伪静态插件功能的实现,不需要修改任何源文件代码和修改数据库,直接在后台一键配置,然后将代码写入伪静态配置中即可正常使用;



# [农哥ng101]-TAG伪静态功能 使用说明

> 适用版本:Discuz! X3.5 / X5.0(X5.0 实测)
> 插件版本:1.0
> 更新日期:2026-08-17

## 一、插件简介

本插件为 Discuz 论坛的 **TAG 标签页**(`misc.php?mod=tag`)提供伪静态地址支持。

开启后,前台页面输出中的标签链接会自动由动态地址:

```
misc.php?mod=tag&id=22
misc.php?mod=tag&id=22&type=thread
misc.php?mod=tag&id=22&page=2
misc.php?mod=tag&id=22&type=thread&page=2
```

重写为伪静态地址:

```
tag-22.html
tag-22-thread.html
tag-22-2.html
tag-22-thread-2.html
```

**特点:**

- 通过 Discuz 原生全局钩子(hookscript)实现,**不修改任何核心文件**;
- 配置全部保存到插件目录的 `tag.json` 文件中,**不写入数据库**;
- 即使后台未开启「URL 静态化」,插件也能独立生效;两者互不影响;
- 移动版(touch)与后台页面不重写,与 Discuz 内置伪静态行为一致;
- 卸载插件时保留 `tag.json`,重装后配置自动沿用。

## 二、文件清单

```
source/plugin/ng101/
├── discuz_plugin_ng101.json   # 插件安装清单(新版 JSON 格式)
├── discuz_plugin_ng101.xml    # 插件安装清单(兼容 XML 格式)
├── install.php                # 安装脚本(注册插件、生成默认 tag.json)
├── uninstall.php              # 卸载脚本(仅删除插件记录,保留 tag.json)
├── ng101_rewrite.class.php    # 核心钩子(前台输出重写)
├── admincp.inc.php            # 后台设置页
├── tag.json                   # 配置文件(后台设置写入此文件)
└── README.md                  # 本说明文档
```

## 三、安装步骤

1. 将 `source/plugin/ng101/` 整个目录上传到服务器,与站点 `source/plugin/` 下的其他插件目录平级;
2. 进入后台 **应用 → 插件**,找到「[农哥ng101]-TAG伪静态功能」,点击 **安装**;
3. 安装完成后点击 **启用**;
4. 进入插件 **设置** 页,点击 **保存配置**(将默认配置写入 `tag.json`,并确认 `tag.json` 文件可写);
5. **必须配置服务器重写规则**(见第四节),否则伪静态地址会 404。

## 四、服务器重写规则

> ⚠️ **重要:规则顺序**
> 所有 `tag-*.html` 规则必须放在 Discuz 的 **通用插件规则**(`xxx-yyy.html` → `plugin.php?id=xxx:yyy`)**之前**。
> 否则 `tag-22.html` 会被通用插件规则误解析为 `plugin.php?id=tag:22`,因 Discuz 没有名为 `tag` 的插件而报「插件不存在或已关闭」。
> 通用插件规则应放在**所有规则的最后**。

### 默认规则

以下为默认配置(`tag-{id}.html` 系列)对应的服务器规则。

#### Nginx

放入站点配置文件的 `server {}` 内:

```nginx
# ---- [农哥ng101] TAG 伪静态规则(长规则在前,必须位于通用插件规则之前)----
rewrite ^/tag-([0-9]+)-([a-z]+)-([0-9]+)\.html$ /misc.php?mod=tag&id=$1&type=$2&page=$3 last;
rewrite ^/tag-([0-9]+)-([a-z]+)\.html$ /misc.php?mod=tag&id=$1&type=$2 last;
rewrite ^/tag-([0-9]+)-([0-9]+)\.html$ /misc.php?mod=tag&id=$1&page=$2 last;
rewrite ^/tag-([0-9]+)\.html$ /misc.php?mod=tag&id=$1 last;

# ---- Discuz 通用插件规则(必须放在所有规则的最后)----
rewrite ^/([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ /plugin.php?id=$12 last;
```

#### Apache

放入站点根目录 `.htaccess`(或 httpd.conf 的 Directory 段)内:

```apache
RewriteEngine On

# ---- [农哥ng101] TAG 伪静态规则(长规则在前,必须位于通用插件规则之前)----
RewriteRule ^tag-([0-9]+)-([a-z]+)-([0-9]+)\.html$ misc.php?mod=tag&id=$1&type=$2&page=$3 [L,QSA]
RewriteRule ^tag-([0-9]+)-([a-z]+)\.html$ misc.php?mod=tag&id=$1&type=$2 [L,QSA]
RewriteRule ^tag-([0-9]+)-([0-9]+)\.html$ misc.php?mod=tag&id=$1&page=$2 [L,QSA]
RewriteRule ^tag-([0-9]+)\.html$ misc.php?mod=tag&id=$1 [L,QSA]
```

#### IIS

将以下 `<rule>` 合并到 `web.config` 的 `<rewrite><rules>` 节点内(需已安装 URL Rewrite 模块):

```xml
<rule name="ng101-rule0" stopProcessing="true">
        <match url="^tag-([0-9]+)-([a-z]+)-([0-9]+)\.html$" />
        <action type="Rewrite" url="/misc.php?mod=tag&id={R:1}&type={R:2}&page={R:3}" appendQueryString="true" />
</rule>
<rule name="ng101-rule1" stopProcessing="true">
        <match url="^tag-([0-9]+)-([a-z]+)\.html$" />
        <action type="Rewrite" url="/misc.php?mod=tag&id={R:1}&type={R:2}" appendQueryString="true" />
</rule>
<rule name="ng101-rule2" stopProcessing="true">
        <match url="^tag-([0-9]+)-([0-9]+)\.html$" />
        <action type="Rewrite" url="/misc.php?mod=tag&id={R:1}&page={R:2}" appendQueryString="true" />
</rule>
<rule name="ng101-rule3" stopProcessing="true">
        <match url="^tag-([0-9]+)\.html$" />
        <action type="Rewrite" url="/misc.php?mod=tag&id={R:1}" appendQueryString="true" />
</rule>
```

> 修改配置后,后台插件「设置」页会自动按新规则重新生成以上三段代码,直接复制即可。

## 五、后台设置说明

入口:**后台 → 应用 → 插件 → [农哥ng101]-TAG伪静态功能 → 设置**

| 设置项 | 默认值 | 说明 |
|---|---|---|
| 启用 TAG 伪静态 | 开 | 总开关,关闭后前台不再重写标签链接 |
| 默认视图 URL | `tag-{id}.html` | `misc.php?mod=tag&id=N`(第 1 页全部内容) |
| 默认视图 分页 URL | `tag-{id}-{page}.html` | `misc.php?mod=tag&id=N&page=P`(第 2 页起) |
| 类型视图 URL | `tag-{id}-{type}.html` | `misc.php?mod=tag&id=N&type=thread/article/blog/doing` |
| 类型视图 分页 URL | `tag-{id}-{type}-{page}.html` | 类型视图第 2 页起 |
| 开启标签首页伪静态 | 关 | 将 `misc.php?mod=tag`(标签聚合首页)重写为静态地址 |
| 标签首页 URL | `tag.html` | 首页伪静态地址,开启「标签首页伪静态」后生效 |

**URL 规则模板支持的占位符:**

| 占位符 | 含义 |
|---|---|
| `{id}` | 标签 ID(数字) |
| `{type}` | 类型(thread / article / blog / doing) |
| `{page}` | 页码(数字) |
| `{CURHOST}` | 站点域名(一般不需要写进规则模板) |

> 修改规则模板后,必须同时更新服务器重写规则(见第四节),否则前台链接与服务器规则不一致会导致 404。

## 六、生效说明

1. 本插件通过 Discuz 全局钩子在页面输出阶段替换标签链接,无需修改任何核心文件;
2. 即使站点后台未开启「全局 → SEO设置 → URL 静态化」,插件也能独立生效;若站点已开启,二者互不影响;
3. 移动版(touch)与后台页面不做重写,与 Discuz 内置伪静态行为一致;
4. 登录用户是否看到伪静态地址,取决于站点「URL 静态化」中“仅对游客启用”的设置;
5. 配置保存在本插件目录 `tag.json` 中,卸载插件时保留,重装后自动沿用。

## 七、常见问题

### Q1:访问 `tag-22.html` 报「插件不存在或已关闭」

**原因**:服务器上 Discuz 通用插件规则(`xxx-yyy.html` → `plugin.php?id=xxx:yyy`)位于 TAG 规则**之前**,把 `tag-22.html` 误解析为 `plugin.php?id=tag:22`。Discuz 没有名为 `tag` 的插件,因此报错。

**解决**:把第四节中 TAG 规则整体移动到通用插件规则**之前**,通用插件规则放到**所有规则最后**,然后重载 Nginx / Apache。

### Q2:访问 `tag-22.html` 返回 404

服务器未配置重写规则,或规则与当前规则模板不匹配。请按第四节配置(或直接从后台设置页复制),并重载 Web 服务器。

### Q3:前台标签链接还是动态地址

- 检查插件是否已 **启用**,且设置页「启用 TAG 伪静态」为开;
- 检查站点是否开启了「URL 静态化 → 仅对游客启用」:若开启,登录用户看到的是动态地址属正常现象;
- 清除浏览器缓存 / 站点数据缓存(后台 → 工具 → 更新缓存)。

### Q4:改了规则模板但链接没变

`ng101_rewrite.class.php` 每次请求实时读取 `tag.json`,无需清缓存即可生效;但**服务器重写规则必须同步修改**,否则点进去 404。

### Q5:`tag.html`(标签首页)打不开

「开启标签首页伪静态」默认是**关**。若开启,请确认服务器已加入对应的 `tag.html` → `misc.php?mod=tag` 重写规则,并且该规则不要与其他规则冲突。

## 八、卸载说明

后台 → 应用 → 插件 → 卸载「[农哥ng101]-TAG伪静态功能」。

- 卸载仅删除插件注册记录,**保留 `tag.json` 配置文件**,重装后配置自动沿用;
- 若需彻底删除,请手动删除 `source/plugin/ng101/` 整个目录,并清理服务器上已添加的 TAG 重写规则。

## 九、注意事项

- 插件通过 `file_get_contents` 实时读取 `tag.json`,请确保插件目录对 PHP 有**读权限**,后台保存时还需要**写权限**;
- 若站点使用 CDN / 整页缓存,伪静态链接需等待缓存更新后生效;
- 修改任何规则后,务必保持 **TAG 规则在通用插件规则之前、长规则在前** 的排列顺序。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要入驻

×
农哥家园网所有资源仅限个人学习研究,商用请取得官方授权;下载文件请自行安全检测,遵守开源协议。谨防私下交易骗子,切勿私下转账,平台不承担私下交易风险。文明交流,禁止广告、外链引流。

0

主题

26

回帖

26

积分

新手上路

积分
26
发表于 2026-8-23 06:22:47 | 显示全部楼层
软件是免费分享的,碰到问题直接在帖子留言,会有人回复处理✨
农哥家园网所有资源仅限个人学习研究,商用请取得官方授权;下载文件请自行安全检测,遵守开源协议。谨防私下交易骗子,切勿私下转账,平台不承担私下交易风险。文明交流,禁止广告、外链引流。

0

主题

20

回帖

20

积分

新手上路

积分
20
发表于 2026-8-23 22:22:00 | 显示全部楼层
测试过后感觉效果不错,免费能做到这样已经相当可以了😀
农哥家园网所有资源仅限个人学习研究,商用请取得官方授权;下载文件请自行安全检测,遵守开源协议。谨防私下交易骗子,切勿私下转账,平台不承担私下交易风险。文明交流,禁止广告、外链引流。

0

主题

23

回帖

23

积分

新手上路

积分
23
发表于 2026-8-26 21:24:35 | 显示全部楼层
没有捆绑乱七八糟附加软件,安装包整体十分干净📝
农哥家园网所有资源仅限个人学习研究,商用请取得官方授权;下载文件请自行安全检测,遵守开源协议。谨防私下交易骗子,切勿私下转账,平台不承担私下交易风险。文明交流,禁止广告、外链引流。

0

主题

27

回帖

27

积分

文章编辑

积分
27
发表于 2026-8-30 14:21:58 | 显示全部楼层
完全不需要花钱购买,普通用户可以直接使用全部能力✨
农哥家园网所有资源仅限个人学习研究,商用请取得官方授权;下载文件请自行安全检测,遵守开源协议。谨防私下交易骗子,切勿私下转账,平台不承担私下交易风险。文明交流,禁止广告、外链引流。

0

主题

27

回帖

27

积分

文章编辑

积分
27
发表于 2026-8-31 03:21:51 | 显示全部楼层
实测不存在暗地收费情况,放心下载,不用有太多顾虑👍
农哥家园网所有资源仅限个人学习研究,商用请取得官方授权;下载文件请自行安全检测,遵守开源协议。谨防私下交易骗子,切勿私下转账,平台不承担私下交易风险。文明交流,禁止广告、外链引流。

0

主题

27

回帖

27

积分

文章编辑

积分
27
发表于 2026-9-1 17:21:25 | 显示全部楼层
免费的实用小工具,不用花钱解锁功能,适合有相关需求的小伙伴
农哥家园网所有资源仅限个人学习研究,商用请取得官方授权;下载文件请自行安全检测,遵守开源协议。谨防私下交易骗子,切勿私下转账,平台不承担私下交易风险。文明交流,禁止广告、外链引流。

0

主题

27

回帖

27

积分

文章编辑

积分
27
发表于 2026-9-2 05:21:48 来自手机 | 显示全部楼层
免费分享出来的好工具,有需要的网友千万不要错过📝
农哥家园网所有资源仅限个人学习研究,商用请取得官方授权;下载文件请自行安全检测,遵守开源协议。谨防私下交易骗子,切勿私下转账,平台不承担私下交易风险。文明交流,禁止广告、外链引流。

0

主题

23

回帖

23

积分

新手上路

积分
23
发表于 2026-9-12 06:23:20 | 显示全部楼层
大家可以多测试不同使用环境,看看会不会出现异常报错😎
农哥家园网所有资源仅限个人学习研究,商用请取得官方授权;下载文件请自行安全检测,遵守开源协议。谨防私下交易骗子,切勿私下转账,平台不承担私下交易风险。文明交流,禁止广告、外链引流。

0

主题

23

回帖

23

积分

新手上路

积分
23
发表于 前天 00:34 | 显示全部楼层
不需要购买授权,全部内容对外开放,不用担心隐性消费陷阱
农哥家园网所有资源仅限个人学习研究,商用请取得官方授权;下载文件请自行安全检测,遵守开源协议。谨防私下交易骗子,切勿私下转账,平台不承担私下交易风险。文明交流,禁止广告、外链引流。
您需要登录后才可以回帖 登录 | 我要入驻

本版积分规则

纯文本|H5版|禁闭室|农哥家园 ( 皖ICP备2024034604号-3|皖公网安备34182302100136号 )

GMT+8, 2026-9-20 18:38 , Processed in 0.046258 second(s), 7 queries , Redis On.

Powered by Discuz! X5.0

© 2026-2026 农哥家园.

快速回复 返回顶部 返回列表