• feixiang
    反向代理路径
    ID proxy_path版本 1.2.2插件制作者 feixiang免费258 行 / 12 KBHook / 后台页
    使用反向代理域名访问时,自动去掉网页链接中的安装子目录,让样式、脚本和提交请求都能正常加载。
    app/plugins/proxy_path/plugin.php
    开发日志已有 2 条

    个人独立维护项目。

    • feixiang
      feixiang
      版本 1.2.2 241cf1257a0b 更新:保存设置后补充提示:已缓存的页面会在各自缓存时间后自动更新,需要立即生效请清空release
    • feixiang
      feixiang
      版本 1.2.0 615d60a1f3de 更新:# 反向代理路径 更新日志 插件 ID:`proxy_path` 适用:程序安装在子目录、通过反向代理以独立域名对外提供访问的场景。 --- ## 1.2.0 - 2026-09-02 ### 修复 - **解决插件被核心自动停用的问题。** 核心的插件冲突检测会用 PHP 词法分析器扫描所有插件文件,收集**顶层**函数名进行比对。此前本插件的 13 个 `proxy_path_*` 工具函数与
    主楼
  • feixiang

    版本 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_boot
    admin.tabs 钩子proxy_path_callback_admin_tabs
    后台设置页proxy_path_callback_admin_page
    CSS 资源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)。
    • 本插件不建表、不发外部请求,启用/停用/卸载均无数据副作用。
    #1
  • 质量报告

    插件质量报告

    插件:proxy_path

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    app.boot全站请求启动否5----
    admin.tabs后台管理页标签栏(展示位置:后台Tab)否1----

    颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。“文件批处理”表示逐个处理用户一次提交的文件,属于必要操作,不标记修正。只有操作实际处于需要优化的循环路径时,才会标记“修正❗️”。

    数据字典

    未检测到插件数据表声明。

    #2
  • feixiang

    版本 1.2.2 更新:
    保存设置后补充提示:已缓存的页面会在各自缓存时间后自动更新,需要立即生效请清空

    #3

发表回复

登录后回复