- 反向代理路径ID proxy_path版本 1.2.2插件制作者 feixiang免费258 行 / 12 KBHook / 后台页使用反向代理域名访问时,自动去掉网页链接中的安装子目录,让样式、脚本和提交请求都能正常加载。app/plugins/proxy_path/plugin.php开发日志已有 2 条
个人独立维护项目。
主楼点赞与点评1feixiang2026-09-02
版本 1.2.0 更新:
反向代理路径 更新日志
插件 ID:
proxy_path
适用:程序安装在子目录、通过反向代理以独立域名对外提供访问的场景。1.2.0 - 2026-09-02
修复
- 解决插件被核心自动停用的问题。 核心的插件冲突检测会用 PHP 词法分析器扫描所有插件文件,收集顶层函数名进行比对。此前本插件的 13 个
proxy_path_*工具函数与服务器上runtime_info插件的顶层函数同名,启用时被判定为「重复定义」并自动停用。 - 将全部业务逻辑封装进
final class ProxyPath。核心分析器遇到class { ... }会记录花括号深度并跳过类内部方法,因此这些方法不再参与冲突比对。 - 仅保留 4 个顶层包装函数,供 manifest 的钩子与资源注册使用,并采用不易重名的命名:
用途 包装函数 app.boot钩子proxy_path_callback_app_bootadmin.tabs钩子proxy_path_callback_admin_tabs后台设置页 proxy_path_callback_admin_pageCSS 资源 proxy_path_callback_css说明
- 功能与配置与 1.1.0 完全一致,已保存的设置无需重新填写。
升级注意
- 覆盖文件后需到后台「插件」页执行同步插件,再重新启用。
1.1.0 - 2026-09-02
该版本因上述函数冲突被核心自动停用,未能实际启用;其功能由 1.2.0 承接。
新增
- 「生效模式」配置项,解决部分反向代理不转发原始
Host头、导致域名白名单永远匹配不上的问题: 按域名自动匹配(auto,默认):仅在请求域名命中白名单时去掉子目录,直连原地址不受影响。始终去除子目录(always):无条件改写脚本路径,适合反代不转发Host的场景。- 请求头调试信息(状态面板内可展开),直接显示后端实际收到的
Host、X-Forwarded-Host、X-Forwarded-Proto、X-Real-IP,便于判断反代配置是否正确。 - 状态面板新增「生效模式」一行,并给出当前未生效的具体原因。
兼容性
- 旧配置缺少
mode字段时自动按auto处理,不会报错。
1.0.0 - 2026-09-02
新增
- 首次发布。 在
app.boot钩子(路由分发与页面输出之前触发)改写脚本路径,使核心的链接生成函数不再输出安装子目录前缀。 - 一次性覆盖全部站内地址:样式与脚本资源、页面链接、表单提交地址、Ajax 接口地址。
- 域名白名单匹配:同时检查
HTTP_HOST与X-Forwarded-Host(支持逗号分隔多值),忽略端口、大小写不敏感;仅后台配置的域名可触发生效。 - 可配置「对外路径」:留空表示代理后从根路径访问;代理到子路径时填写
forum这类路径即可。 - 后台「反向代理」标签页,含状态面板:当前访问域名、程序安装目录、页面链接前缀、是否命中。
- 输入校验:域名与对外路径均做白名单校验,非法输入给出明确错误提示。
实现要点
- 核心中仅
app_url()一处产出路径前缀,其余 URL 函数均经由它;改掉该输入点即可覆盖全部地址。 parse_path_route()在app.boot之前已执行完毕,改写不会影响路由解析。
注意事项
始终去除子目录模式下,直连原地址会失效(链接前缀被无条件改为根路径)。若需保留直连调试,请在反代侧转发原始Host:- nginx:
proxy_set_header Host $host; - Apache:
RequestHeader set X-Forwarded-Host "%{HTTP_HOST}s"
配置生效后,把插件模式切回「按域名自动匹配」即可两种方式同时使用。
- 若后台「网站固定地址」填写的是带子目录的旧地址,建议改为代理后的域名(如
https://feixiang.pp.ua)。 - 本插件不建表、不发外部请求,启用/停用/卸载均无数据副作用。
- 解决插件被核心自动停用的问题。 核心的插件冲突检测会用 PHP 词法分析器扫描所有插件文件,收集顶层函数名进行比对。此前本插件的 13 个
插件质量报告
插件:
proxy_pathHook 功能范围 循环 使用频率 文件读写 修改系统表 读写系统表 读写自己的表 app.boot 全站请求启动 否 5 - - - - admin.tabs 后台管理页标签栏(展示位置:后台Tab) 否 1 - - - - 颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。“文件批处理”表示逐个处理用户一次提交的文件,属于必要操作,不标记修正。只有操作实际处于需要优化的循环路径时,才会标记“修正❗️”。
数据字典
未检测到插件数据表声明。
版本 1.2.2 更新:
保存设置后补充提示:已缓存的页面会在各自缓存时间后自动更新,需要立即生效请清空