先說结論!
在當前 FinchUI 多語言網站插件與 Z-BlogPHP 的處理流程中,主题自帶的 404 頁面不會调用第三方機器翻译接口,不會消耗翻译额度。

一、什麼情况下會顯示主题 404 頁面
當访問的網站地址不存在,且服务器将该请求轉發給 Z-BlogPHP 的 index.php 處理時,Z-BlogPHP 會進入路由匹配流程。若没有任何路由匹配成功,系统會设置 HTTP 404 状態并渲染當前主题的 template/404.php。
因此,無論不存在的是文章地址、分類地址還是任意伪静態路径,只要最终由 Z-BlogPHP 接管并顯示主题 404,都會使用主题的 404 模板。
二、多語言插件在正常頁面中的翻译流程
正常頁面處理時,插件會在頁面開始阶段開启输齣缓衝;頁面模板、主题和其他插件输齣完成後,再在頁面结束阶段取得整段 HTML,進行链接改寫、語言標记處理和正文機器翻译。
正常页面:
Index_Begin → 开启输出缓冲 → 路由与模板输出 → Index_End → 处理 HTML → 必要时请求翻译接口只有执行到頁面结束阶段,插件才會處理 HTML;并且只有非默認語言、非简繁互轉、启用了翻译服务且本地缓存未命中的文本,才會请求第三方翻译接口。
三、404 頁面為何不會翻译
404 的處理方式與正常頁面不同。路由無法匹配後,Z-BlogPHP 會進入错誤處理器,加載主题的 404 模板并立即结束本次 PHP 请求。
404 页面:
Index_Begin → 开启输出缓冲 → 路由未匹配 → 输出主题 404 模板 → 结束请求
不会进入:Index_End → HTML 翻译处理 → 翻译接口请求主题 404 模板雖然會输齣“頁面不存在”“返回首頁”等文字,但這些文字不會進入多語言插件的正文翻译處理步骤。PHP 结束请求時只會直接释放已有输齣缓衝内容,不會执行插件在正常頁面结束阶段注册的翻译處理。
四、FinchUI Store 主题的 404 文案來源
以 FinchUI Store 主题為例,template/404.php 使用的是主题本地語言包變量,例如:
{$language['404title']}
{$language['404loading']}
{$language['404home']}
{$language['404goback']}
{$language['404tips']}這些内容來自主题自身的語言数組,不是通過 DeepL、Google、火山引擎、腾讯雲、阿裏雲、百度、有道等在線翻译接口實時取得,因此本身也不會產生翻译服务费用。
五、需要區分的兩類请求
| 请求類型 | 是否执行主题 404 | 是否消耗翻译额度 |
|---|---|---|
| 服务器直接返回静態 404 | 否 | 否。PHP 和插件均不會执行。 |
| Z-BlogPHP 路由未命中,顯示主题 404 | 是 | 否。请求在 404 输齣後结束,不進入翻译處理。 |
| 404 頁面自動跳轉或用户點击返回首頁後產生的新首頁请求 | 不适用 | 首頁按正常规则處理;仅缓存未命中的待翻译文本可能请求接口。 |
六、如何自行驗證
- 在插件後臺清理翻译缓存,并记錄翻译服务商後臺的用量。
- 連续访問几個不存在的非默認語言地址,例如 /en/not-found-a、/en/not-found-b。
- 检查 zb_users/cache/fui_multilang/en/ 是否新增 JSON 翻译缓存文件。
- 再次检查翻译服务商後臺的请求数或字符消耗。
預期结果:仅访問主题 404 頁面不會新增正文翻译 JSON 缓存,也不會讓翻译服务商用量增長。
注意:如果 404 頁面配置了自動返回首頁,蜘蛛或访客随後请求首頁是一次独立请求。應将首頁请求與最初的 404 请求分開统计。





添加客服qq
网友評論