[{"content":"安装 Linux \u0026amp; macOS curl -fsSL gomodvanityurls.com/install.sh | bash 也可以从 最新版本 下载二进制文件。\nWindows 根据你的 shell 环境选择安装方式：\n方式 A — Git Bash / MSYS2 / Cygwin（推荐）：\n打开你的 shell 终端，然后运行：\ncurl -fsSL gomodvanityurls.com/install.sh | bash 脚本会自动检测 Windows 环境并下载正确的 .exe 二进制文件。\n方式 B — WSL/WSL2：\n打开 WSL 终端，然后运行：\ncurl -fsSL gomodvanityurls.com/install.sh | bash 方式 C — Scoop（PowerShell / CMD）：\nscoop bucket add gomodvanityurls https://github.com/gomodvanityurls/scoop-bucket scoop install gvu Scoop 会自动配置 PATH。运行 gvu --version 验证安装。\n方式 D — PowerShell / CMD（手动下载）：\n从 最新版本 下载 gvu-windows-amd64.exe（ARM 设备下载 gvu-windows-arm64.exe），重命名为 gvu.exe，并将其所在目录添加到 PATH。\n添加 vanity URL 使用 gomod.io（默认域名，无需配置） $ gvu add gomod.io/private-module https://github.com/yourorg/private-module.git ✔ Route created successfully! ═══════════════════════════════════════════════════════════ ┃ Route ID: m_abc123 ┃ Vanity Path: gomod.io/private-module ┃ Target Repo: https://github.com/yourorg/private-module.git ┃ Quota: 1 / 5 used ═══════════════════════════════════════════════════════════ 系统会自动创建匿名账户，无需注册。\nMonorepo 子目录支持（Go 1.25+） 如果你的仓库包含多个子目录下的 Go 模块（如 go/module-a/go.mod），使用 --subdir 指定模块在仓库中的位置：\ngvu add gomod.io/module-a https://github.com/yourorg/monorepo.git --subdir go/module-a ┃ Route ID: m_def456 ┃ Vanity Path: gomod.io/module-a ┃ Target Repo: https://github.com/yourorg/monorepo.git ┃ Subdir: go/module-a 然后在代码中使用：\nimport \u0026#34;gomod.io/module-a\u0026#34; Go 1.25+ 工具链会 clone https://github.com/yourorg/monorepo 并读取 go/module-a/go.mod。Go \u0026lt; 1.25 版本会静默忽略 subdir 字段（向后兼容）。\n主版本支持（v2、v3……） 路由自动支持 Go module 的主版本后缀，只需添加基础路由即可，无需为 /v2、/v3 等单独设置。\n# 这一条路由同时支持 /v2、/v3 及未来的任意主版本 gvu add gomod.io/mylib https://github.com/yourorg/mylib.git 以下 import 无需额外配置即可正常工作：\nimport \u0026#34;gomod.io/mylib\u0026#34; // v0 或 v1 import \u0026#34;gomod.io/mylib/v2\u0026#34; // v2 import \u0026#34;gomod.io/mylib/v3\u0026#34; // v3 通配路由（仅 Pro） 如果同一组织或前缀下有很多仓库，通配路由让你用一条规则覆盖所有仓库：\n# 覆盖 go.mycorp.com/dept1/ 下的所有仓库 gvu add \u0026#39;go.mycorp.com/dept1/*\u0026#39; \u0026#39;https://github.com/dept1/*.git\u0026#39; 需要 Pro 账户和自定义域名。详见通配路由。\n使用自定义域名（需要 Verified 账户） # 第一步：创建匿名账户（快速，无需邮箱） gvu auth signup # 第二步：绑定邮箱，升级为 Verified 账户 gvu auth bind user@example.com # 输入发送到邮箱的 6 位验证码 # 第三步：配置 DNS 解析（必须在添加路由前完成） # go.yourcompany.com CNAME gomodvanityurls.com # 第四步：添加自定义域名路由 gvu add go.yourcompany.com/private-module https://github.com/yourorg/private-module.git 配置 Go 环境 告诉 Go 工具链直接解析你的 vanity 路径：\nexport GOPRIVATE=gomod.io # 如果有自定义域名，也加上： export GOPRIVATE=gomod.io,go.yourcompany.com 将上述命令添加到 ~/.bashrc 或 ~/.zshrc 中以持久化配置。\n使用 import \u0026#34;gomod.io/private-module\u0026#34; import \u0026#34;go.yourcompany.com/private-module\u0026#34; Go 工具链会自动将 vanity 路径解析到你的 Git 仓库。如果将来迁移代码仓库，用户的导入路径保持不变。\nmodule path 必须与 vanity URL 一致。\n你的模块 go.mod 必须使用 vanity URL 作为 module path，而不是原始的 Git 托管地址。例如：\n// go.mod — 正确 module gomod.io/private-module // go.mod — 错误（会导致导入解析失败） module github.com/yourorg/private-module 如果你的现有模块使用 github.com/... 或 gitlab.com/... 作为 module path，请在发布前将其更新为 vanity URL。\n管理路由 # 列出你的路由 gvu list # 删除路由 gvu remove m_abc123 # 批量删除 gvu remove m_abc123 m_def456 -y # 查看账户信息 gvu auth whoami ","permalink":"https://gomodvanityurls.com/zh/docs/quickstart/","summary":"\u003ch2 id=\"安装\"\u003e安装\u003c/h2\u003e\n\u003ch3 id=\"linux--macos\"\u003eLinux \u0026amp; macOS\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ecurl -fsSL gomodvanityurls.com/install.sh | bash\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e也可以从 \u003ca href=\"https://github.com/gomodvanityurls/gvu/releases/latest\"\u003e最新版本\u003c/a\u003e 下载二进制文件。\u003c/p\u003e\n\u003ch3 id=\"windows\"\u003eWindows\u003c/h3\u003e\n\u003cp\u003e根据你的 shell 环境选择安装方式：\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e方式 A — Git Bash / MSYS2 / Cygwin（推荐）：\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e打开你的 shell 终端，然后运行：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ecurl -fsSL gomodvanityurls.com/install.sh | bash\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e脚本会自动检测 Windows 环境并下载正确的 \u003ccode\u003e.exe\u003c/code\u003e 二进制文件。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e方式 B — WSL/WSL2：\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e打开 WSL 终端，然后运行：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ecurl -fsSL gomodvanityurls.com/install.sh | bash\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cstrong\u003e方式 C — Scoop（PowerShell / CMD）：\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-powershell\" data-lang=\"powershell\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003escoop bucket add gomodvanityurls https://github.com/gomodvanityurls/\u003cspan style=\"color:#8be9fd;font-style:italic\"\u003escoop-bucket\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003escoop install gvu\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eScoop 会自动配置 PATH。运行 \u003ccode\u003egvu --version\u003c/code\u003e 验证安装。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e方式 D — PowerShell / CMD（手动下载）：\u003c/strong\u003e\u003c/p\u003e","title":"快速开始"},{"content":"Verified 和 Pro 用户可以使用自己的域名作为 vanity URL 前缀。\n前提条件 Verified 或 Pro 账户（运行 gvu auth bind \u0026lt;email\u0026gt; 即可升级） 一个你拥有 DNS 管理权限的域名 已安装 gvu CLI — 参见 快速开始（Windows：使用 WSL/WSL2 或下载 .exe） 配置步骤 重要：DNS 必须在运行 gvu add 之前配置好。服务端会在路由创建时验证域名的 CNAME 记录。\n1. 配置 DNS 通过 CNAME 将你的域名指向服务：\ngo.yourcompany.com CNAME gomodvanityurls.com 2. 等待 DNS 生效 DNS 变更通常在几秒到几分钟内生效。你可以用以下命令验证：\ndig go.yourcompany.com CNAME +short # 预期输出：gomodvanityurls.com. 3. 添加自定义域名路由 gvu add go.yourcompany.com/private-module https://github.com/yourorg/private-module.git 服务端会验证 CNAME 记录。如果 DNS 尚未生效，会收到 DNS_NOT_CONFIGURED 错误 — 等待传播后重试即可。\n4. TLS 自动签发 TLS 证书通过 Caddy On-Demand TLS 自动签发。CLI 在创建路由后会探测该路由，如果 TLS 仍在签发中会给出提示。\n5. 开始使用 import \u0026#34;go.yourcompany.com/private-module\u0026#34; 配额 套餐 自定义域名 总配额（共享） Anonymous ✗ 5 Verified ✓ 10 Pro ✓ 50 自定义域名路由与 gomod.io 路由共享同一个配额池。例如，一个 Verified 用户如果有 3 个自定义域名路由，则还剩 7 个 gomod.io 路由配额。\n域名绑定（仅 Pro） Pro 用户首次在某个自定义域名下添加路由时，该域名会自动绑定到你的账户。此后只有你可以在该域名下添加路由，防止其他用户使用你的 DNS 配置。\n套餐 DNS 验证 域名绑定 Verified ✓ ✗ Pro ✓ ✓（最多 50 个域名） 注意： 删除域名下的所有路由不会释放域名绑定。如需释放，请联系管理员。\n使用技巧 建议使用子域名，如 go.yourcompany.com 或 pkg.yourcompany.com 自定义域名路由不受短路径限制 可以在同一账户中同时使用 gomod.io 和自定义域名路由 不同子域名独立 — go.example.com 和 pkg.example.com 可属于不同用户 域名绑定在 Pro 订阅过期或所有路由删除后仍然有效 --subdir 也适用于自定义域名： gvu add go.mycompany.com/module-a https://github.com/myorg/monorepo.git --subdir go/module-a 通配路由（仅 Pro） Pro 用户可以创建通配路由，覆盖自定义域名前缀下的所有仓库，无需逐个添加。\n类型 语法 示例 Repo 通配 gvu add '域名/前缀/*' '仓库/*.git' go.mycorp.com/dept/* → github.com/dept/*.git Subdir 通配 gvu add 域名/前缀/仓库 仓库.git '--subdir=*' 自动解析 monorepo 子目录 详见通配路由了解优先级规则和完整示例。\n","permalink":"https://gomodvanityurls.com/zh/docs/custom-domains/","summary":"\u003cp\u003eVerified 和 Pro 用户可以使用自己的域名作为 vanity URL 前缀。\u003c/p\u003e\n\u003ch2 id=\"前提条件\"\u003e前提条件\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eVerified\u003c/strong\u003e 或 \u003cstrong\u003ePro\u003c/strong\u003e 账户（运行 \u003ccode\u003egvu auth bind \u0026lt;email\u0026gt;\u003c/code\u003e 即可升级）\u003c/li\u003e\n\u003cli\u003e一个你拥有 DNS 管理权限的域名\u003c/li\u003e\n\u003cli\u003e已安装 \u003ccode\u003egvu\u003c/code\u003e CLI — 参见 \u003ca href=\"/zh/docs/quickstart/#%E5%AE%89%E8%A3%85\"\u003e快速开始\u003c/a\u003e（Windows：使用 WSL/WSL2 或\u003ca href=\"https://github.com/gomodvanityurls/gvu/releases/latest\"\u003e下载 .exe\u003c/a\u003e）\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"配置步骤\"\u003e配置步骤\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003e重要\u003c/strong\u003e：DNS 必须在运行 \u003ccode\u003egvu add\u003c/code\u003e \u003cstrong\u003e之前\u003c/strong\u003e配置好。服务端会在路由创建时验证域名的 CNAME 记录。\u003c/p\u003e\u003c/blockquote\u003e\n\u003ch3 id=\"1-配置-dns\"\u003e1. 配置 DNS\u003c/h3\u003e\n\u003cp\u003e通过 CNAME 将你的域名指向服务：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-fallback\" data-lang=\"fallback\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ego.yourcompany.com  CNAME  gomodvanityurls.com\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"2-等待-dns-生效\"\u003e2. 等待 DNS 生效\u003c/h3\u003e\n\u003cp\u003eDNS 变更通常在几秒到几分钟内生效。你可以用以下命令验证：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003edig go.yourcompany.com CNAME +short\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#6272a4\"\u003e# 预期输出：gomodvanityurls.com.\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"3-添加自定义域名路由\"\u003e3. 添加自定义域名路由\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egvu add go.yourcompany.com/private-module https://github.com/yourorg/private-module.git\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e服务端会验证 CNAME 记录。如果 DNS 尚未生效，会收到 \u003ccode\u003eDNS_NOT_CONFIGURED\u003c/code\u003e 错误 — 等待传播后重试即可。\u003c/p\u003e","title":"自定义域名"},{"content":"路由管理 命令 说明 gvu add \u0026lt;vanity-path\u0026gt; \u0026lt;repo-url\u0026gt; 添加新的 vanity URL 路由 gvu list 列出所有已注册的路由 gvu remove \u0026lt;route-id\u0026gt; [...] 删除一个或多个路由 gvu add 托管平台会根据仓库 URL 自动识别。\n参数 参数 说明 --subdir \u0026lt;path\u0026gt; 仓库中 go.mod 所在的子目录路径（Go 1.25+）。使用 * 表示 subdir 通配（仅 Pro）。单模块仓库无需指定。 示例 # ── gomod.io 路由（默认域名，所有用户可用）── # GitHub gvu add gomod.io/mylib https://github.com/myorg/mylib.git gvu add gomod.io/mylib ssh://git@github.com:myorg/mylib.git # GitLab gvu add gomod.io/mylib https://gitlab.com/myorg/mylib.git gvu add gomod.io/mylib ssh://git@gitlab.com:myorg/mylib.git # Bitbucket gvu add gomod.io/mylib https://user@bitbucket.org/myorg/mylib.git gvu add gomod.io/mylib ssh://git@bitbucket.org:myorg/mylib.git # Codeberg gvu add gomod.io/mylib https://codeberg.org/myorg/mylib.git gvu add gomod.io/mylib ssh://git@codeberg.org:myorg/mylib.git # 自托管 GitLab（自定义端口） gvu add gomod.io/mylib http://gitlab.example.com/group/mylib.git gvu add gomod.io/mylib ssh://git@gitlab.example.com:2222/group/mylib.git # ── Monorepo（Go 1.25+，--subdir）── # go.mod 位于仓库内的 go/module-a/go.mod gvu add gomod.io/module-a https://github.com/myorg/monorepo.git --subdir go/module-a gvu add gomod.io/module-b https://github.com/myorg/monorepo.git --subdir go/module-b # ── 自定义域名路由（仅 Verified/Pro 用户可用）── gvu add go.mycompany.com/mylib https://github.com/myorg/mylib.git gvu add go.mycompany.com/mylib ssh://git@gitlab.com:myorg/mylib.git # ── 通配路由（仅 Pro + 自定义域名）── # Repo 通配 — 覆盖 GitHub org 下的所有仓库 gvu add \u0026#39;go.mycorp.com/dept1/*\u0026#39; \u0026#39;https://github.com/dept1/*.git\u0026#39; # Subdir 通配 — 覆盖 monorepo 中的所有子目录 gvu add go.mycorp.com/dept1/mono https://github.com/dept1/mono.git \u0026#39;--subdir=*\u0026#39; 注意： 通配路由需要 Pro 账户和自定义域名。Repo 通配和 Subdir 通配互斥。详见通配路由。\n自定义域名前置条件：运行 gvu add 之前必须先配置好 DNS CNAME 记录。服务端会在路由创建时验证 CNAME。详见自定义域名配置步骤。\nPro 域名绑定：Pro 用户享有独占域名绑定 — 一旦你在某个自定义域名下添加了路由，只有你可以在该域名下继续添加路由。\n注意： 添加 vanity URL 后，你的模块 go.mod 必须使用 vanity 路径作为 module path（如 module gomod.io/mylib），而不是原始托管地址（如 github.com/myorg/mylib）。\ngvu list 列出所有已注册的路由。通配路由会标记 [W1] 或 [W2]：\n$ gvu list [1] m_abc123 gomod.io/mylib [exact] [2] m_def456 go.mycorp.com/dept1/* [W1] [3] m_ghi789 go.mycorp.com/dept1/mono [W2] gvu remove 支持批量删除：\ngvu remove m_abc123 # 单个删除 gvu remove m_abc123 m_def456 # 多个删除 gvu remove m_abc123 m_def456 -y # 跳过确认 # 删除通配路由 gvu remove m_def456 # 删除 W1 通配规则 认证 命令 说明 gvu auth signup 创建匿名账户 gvu auth bind \u0026lt;email\u0026gt; 绑定邮箱，升级为 Verified gvu auth login \u0026lt;email\u0026gt; 在新设备上通过邮箱验证码登录 gvu auth logout 清除本地凭证 gvu auth whoami 显示当前账户信息和配额 gvu auth whoami 显示你的账户详情，包括套餐、配额和 access token。\n示例 — Pro 用户：\n$ gvu auth whoami User ID: usr_abc123 Plan: PRO Pro Expires: 2027-06-24T00:00:00Z (365 days remaining) Email Status: Verified (user@example.com) Access Token: gvu_a1b2...c3d4 (expires 2026-07-25) Route Quota: 12 / 50 used (38 slots remaining) 当 Pro 订阅剩余 7 天或更少时，到期日期旁会显示警告提示。\n订阅 命令 说明 gvu subscribe 订阅 Pro 套餐（交互式流程） gvu subscribe 通过交互式支付流程将账户升级为 Pro：\n选择计费周期（月付或年付） 显示所有支持的支付方式的二维码 选择支付渠道（微信支付、支付宝或 PayPal） 输入交易单号的后 4 位字符 提交后，管理员会核实付款并激活你的 Pro 订阅。\n详见定价了解套餐和支付方式详情。\n其他命令 命令 说明 gvu donate 显示捐赠二维码（微信支付、支付宝、PayPal） gvu issue 提交 GitHub Issue gvu --version 显示版本号 全局参数 参数 简写 说明 --json -j 结构化 JSON 输出 --yes -y 跳过确认提示 --version -v 显示版本号 JSON 输出 所有命令都支持 --json：\n$ gvu list --json { \u0026#34;status\u0026#34;: \u0026#34;success\u0026#34;, \u0026#34;data\u0026#34;: { \u0026#34;routes\u0026#34;: [ { \u0026#34;id\u0026#34;: \u0026#34;m_abc123\u0026#34;, \u0026#34;vanity_path\u0026#34;: \u0026#34;gomod.io/private-module\u0026#34;, \u0026#34;target_repo\u0026#34;: \u0026#34;https://github.com/myorg/private-module.git\u0026#34;, \u0026#34;repo_type\u0026#34;: \u0026#34;github\u0026#34;, \u0026#34;route_type\u0026#34;: \u0026#34;exact\u0026#34; }, { \u0026#34;id\u0026#34;: \u0026#34;m_def456\u0026#34;, \u0026#34;vanity_path\u0026#34;: \u0026#34;gomod.io/module-a\u0026#34;, \u0026#34;target_repo\u0026#34;: \u0026#34;https://github.com/myorg/monorepo.git\u0026#34;, \u0026#34;repo_type\u0026#34;: \u0026#34;github\u0026#34;, \u0026#34;subdir\u0026#34;: \u0026#34;go/module-a\u0026#34;, \u0026#34;route_type\u0026#34;: \u0026#34;exact\u0026#34; }, { \u0026#34;id\u0026#34;: \u0026#34;m_ghi789\u0026#34;, \u0026#34;vanity_path\u0026#34;: \u0026#34;go.mycorp.com/dept1/*\u0026#34;, \u0026#34;target_repo\u0026#34;: \u0026#34;https://github.com/dept1/*.git\u0026#34;, \u0026#34;repo_type\u0026#34;: \u0026#34;github\u0026#34;, \u0026#34;route_type\u0026#34;: \u0026#34;wildcard_repo\u0026#34; } ] } } 支持的 Git 平台 平台 HTTPS SSH 自托管 GitHub 支持 支持 — GitLab 支持 支持 支持 Bitbucket 支持 支持 — Codeberg 支持 支持 — 自定义 支持 支持 支持 配置文件 凭证（access token、邮箱、套餐信息）存储在 ~/.config/gvu/config.yaml，首次使用时自动创建。\n隐私说明： 服务端不存储你的 Git 凭证、SSH 密钥或仓库密码。gvu 只会向服务端发送邮箱和验证码——access token 始终保存在你的本地机器上。\n","permalink":"https://gomodvanityurls.com/zh/docs/cli/","summary":"\u003ch2 id=\"路由管理\"\u003e路由管理\u003c/h2\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e命令\u003c/th\u003e\n          \u003cth\u003e说明\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egvu add \u0026lt;vanity-path\u0026gt; \u0026lt;repo-url\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e添加新的 vanity URL 路由\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egvu list\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e列出所有已注册的路由\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egvu remove \u0026lt;route-id\u0026gt; [...]\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e删除一个或多个路由\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"gvu-add\"\u003e\u003ccode\u003egvu add\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003e托管平台会根据仓库 URL \u003cstrong\u003e自动识别\u003c/strong\u003e。\u003c/p\u003e\n\u003ch4 id=\"参数\"\u003e参数\u003c/h4\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e参数\u003c/th\u003e\n          \u003cth\u003e说明\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003e--subdir \u0026lt;path\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e仓库中 \u003ccode\u003ego.mod\u003c/code\u003e 所在的子目录路径（Go 1.25+）。使用 \u003ccode\u003e*\u003c/code\u003e 表示 subdir 通配（仅 Pro）。单模块仓库无需指定。\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch4 id=\"示例\"\u003e示例\u003c/h4\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#6272a4\"\u003e# ── gomod.io 路由（默认域名，所有用户可用）──\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#6272a4\"\u003e# GitHub\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egvu add gomod.io/mylib https://github.com/myorg/mylib.git\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egvu add gomod.io/mylib ssh://git@github.com:myorg/mylib.git\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#6272a4\"\u003e# GitLab\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egvu add gomod.io/mylib https://gitlab.com/myorg/mylib.git\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egvu add gomod.io/mylib ssh://git@gitlab.com:myorg/mylib.git\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#6272a4\"\u003e# Bitbucket\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egvu add gomod.io/mylib https://user@bitbucket.org/myorg/mylib.git\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egvu add gomod.io/mylib ssh://git@bitbucket.org:myorg/mylib.git\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#6272a4\"\u003e# Codeberg\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egvu add gomod.io/mylib https://codeberg.org/myorg/mylib.git\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egvu add gomod.io/mylib ssh://git@codeberg.org:myorg/mylib.git\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#6272a4\"\u003e# 自托管 GitLab（自定义端口）\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egvu add gomod.io/mylib http://gitlab.example.com/group/mylib.git\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egvu add gomod.io/mylib ssh://git@gitlab.example.com:2222/group/mylib.git\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#6272a4\"\u003e# ── Monorepo（Go 1.25+，--subdir）──\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#6272a4\"\u003e# go.mod 位于仓库内的 go/module-a/go.mod\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egvu add gomod.io/module-a https://github.com/myorg/monorepo.git --subdir go/module-a\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egvu add gomod.io/module-b https://github.com/myorg/monorepo.git --subdir go/module-b\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#6272a4\"\u003e# ── 自定义域名路由（仅 Verified/Pro 用户可用）──\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egvu add go.mycompany.com/mylib https://github.com/myorg/mylib.git\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egvu add go.mycompany.com/mylib ssh://git@gitlab.com:myorg/mylib.git\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#6272a4\"\u003e# ── 通配路由（仅 Pro + 自定义域名）──\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#6272a4\"\u003e# Repo 通配 — 覆盖 GitHub org 下的所有仓库\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egvu add \u003cspan style=\"color:#f1fa8c\"\u003e\u0026#39;go.mycorp.com/dept1/*\u0026#39;\u003c/span\u003e \u003cspan style=\"color:#f1fa8c\"\u003e\u0026#39;https://github.com/dept1/*.git\u0026#39;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#6272a4\"\u003e# Subdir 通配 — 覆盖 monorepo 中的所有子目录\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egvu add go.mycorp.com/dept1/mono https://github.com/dept1/mono.git \u003cspan style=\"color:#f1fa8c\"\u003e\u0026#39;--subdir=*\u0026#39;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003e注意：\u003c/strong\u003e 通配路由需要 \u003cstrong\u003ePro\u003c/strong\u003e 账户和\u003cstrong\u003e自定义域名\u003c/strong\u003e。Repo 通配和 Subdir 通配互斥。详见\u003ca href=\"/zh/docs/wildcard-routing/\"\u003e通配路由\u003c/a\u003e。\u003c/p\u003e","title":"CLI 命令参考"},{"content":"Module Path 为什么 go.mod 必须使用 vanity URL 而不是 github.com/...？ 当你设置了 vanity URL（如 gomod.io/mylib）后，Go 工具链会使用导入路径（即 vanity URL）来定位模块。go.mod 中的 module 指令必须完全匹配：\n// go.mod — 正确 module gomod.io/mylib // go.mod — 错误 module github.com/yourorg/mylib 如果不匹配，go get 和 go build 会报错：\ngo: gomod.io/mylib@v0.1.0: parsing go.mod: module declares its path as: github.com/yourorg/mylib but was required as: gomod.io/mylib 如何将现有模块迁移到 vanity URL？ 添加 vanity URL 路由：gvu add gomod.io/mylib https://github.com/yourorg/mylib.git 更新 go.mod：将 module github.com/yourorg/mylib 改为 module gomod.io/mylib 更新模块内所有内部 import 为新的 vanity 路径 打一个新版本标签：git tag v0.2.0 \u0026amp;\u0026amp; git push --tags 通知下游使用者更新 import 路径 能否同时保留 github.com/... 和 vanity URL？ 不行。Go modules 要求 go.mod 中的 module 指令是唯一的标准路径。同一段代码不能有两个不同的 module path。选择其一并坚持使用。\n需要为 /v2、/v3 等主版本单独设置路由吗？ 不需要。路由自动支持 Go module 的主版本后缀（/v2、/v3 等），只需添加基础路由即可：\ngvu add gomod.io/mylib https://github.com/yourorg/mylib.git 这一条路由即可同时服务 gomod.io/mylib、gomod.io/mylib/v2、gomod.io/mylib/v3 等所有版本。服务端会自动检测版本后缀、剥离后进行路由查找，并在 go-import meta tag 的 prefix 中保留版本号 — 完全符合 Go module 规范。\n入门 使用 gomod.io 路由需要注册账户吗？ 不需要。当你首次运行 gvu add 命令时，系统会自动创建一个匿名账户。无需邮箱或注册流程。不过匿名账户限制为 5 条路由，且仅限 gomod.io 域名。\n如何从 Anonymous 升级为 Verified？ 运行 gvu auth bind your@email.com，输入发送到邮箱的验证码即可。升级后你的账户变为 Verified，可使用最多 10 条路由 并解锁自定义域名功能。\nGOPRIVATE 是什么？为什么需要设置？ GOPRIVATE 告诉 Go 工具链直接从源端（通过 Git）获取指定的模块路径，而不是从公共 Go 代理（proxy.golang.org）。如果不设置，代理将无法解析你的私有 vanity URL。\nexport GOPRIVATE=gomod.io # 如果有自定义域名，也加上： export GOPRIVATE=gomod.io,go.yourcompany.com 配额与方案 Anonymous Verified Pro 总路由数 5 10 50 自定义域名 ✗ ✓ ✓ 域名绑定 ✗ ✗ ✓ (50) 短路径（\u0026lt; 4 字符） ✗ ✗ ✓ 如何订阅 Pro？ 运行 gvu subscribe，按交互流程完成支付。付款后管理员会核实你的交易（通常 24 小时内），然后自动升级你的账户。\n支持哪些支付方式？ 方式 适用人群 微信支付 中国大陆用户 支付宝 中国大陆用户 PayPal 海外用户 可选择月付或年付。详见定价。\nPro 订阅过期后路由会怎样？ Pro 过期后，账户降级为 Verified（10 条路由），超出的路由会被冻结。它们不会被立即删除 — 续费订阅即可重新激活。\n运行 gvu auth whoami 可查看到期日期和剩余天数 剩余 7 天或更少时会显示警告提示 续费后，所有冻结的路由会自动恢复 注意： 冻结的路由保留 90 天。如果 90 天内未续费，冻结路由将被永久删除。\n自定义域名 如何设置自定义域名？ 升级为 Verified：gvu auth bind your@email.com 创建 CNAME DNS 记录：go.yourcompany.com → gomodvanityurls.com 等待 DNS 生效（通常几秒到几分钟） 添加路由：gvu add go.yourcompany.com/mylib https://github.com/yourorg/mylib.git TLS 证书会通过 Caddy On-Demand TLS 自动配置 详见自定义域名。\n自定义域名需要手动配置 HTTPS 吗？ 不需要 — TLS 证书全自动管理。CNAME 配置完成后，首次请求时即会自动签发证书。\n为什么 gvu add 要求先配置 DNS？ 为防止域名劫持，服务端会在创建路由前验证域名的 CNAME 记录。请先配置 CNAME，等待 DNS 生效后，再运行 gvu add。如果 DNS 尚未配置，会收到 DNS_NOT_CONFIGURED 错误。\n其他用户可以在我的自定义域名下添加路由吗？ Pro 用户：不可以。当你首次在某个自定义域名下添加路由时，该域名会自动绑定到你的账户。其他用户会收到 DOMAIN_ALREADY_BOUND 错误。 Verified 用户：可以 — Verified 账户可以使用自定义域名，但不享有独占域名绑定。升级为 Pro 即可锁定你的域名。 如果别人先绑定了我的域名怎么办？ 请联系管理员并提供域名所有权证明（如 DNS TXT 记录或域名注册商截图）。验证通过后，我们可以转移绑定。\n删除所有路由会释放域名绑定吗？ 不会。即使域名下的所有路由都被删除，域名绑定仍然有效。这可以防止意外丢失域名归属。如需释放绑定，请联系管理员。\n通配路由 什么是通配路由？ 通配路由让你用一条规则覆盖自定义域名前缀下的所有仓库，无需逐个添加。需要 Pro 账户和自定义域名。详见通配路由。\n可以在 gomod.io 上使用通配路由吗？ 不可以。通配路由仅适用于自定义域名，gomod.io 路由只支持精确匹配。\n通配路由会占用配额吗？ 会。每条通配路由占 1 个 Pro 配额（共 50 个），与普通路由一致。\n通配路由和精确路由同时匹配时怎么处理？ 精确路由始终优先。通配路由只在无精确匹配时生效。参见优先级规则。\n可以同时使用 Repo 通配和 Subdir 通配吗？ 不可以。Repo 通配（W1）和 Subdir 通配（W2）互斥，每条路由只能选一种。\n通配规则匹配到的仓库不存在怎么办？ go get 会报 \u0026ldquo;repository not found\u0026rdquo; 错误，与精确路由行为一致。通配规则只负责解析 URL，仓库必须存在于 Git 托管平台上。\nPro 过期后通配路由还能用吗？ 没有特殊处理 — 通配路由与普通路由一样，Pro 过期后会被冻结和删除。参见 Pro 有效期与续费。\n故障排查 go get 报错 \u0026ldquo;module declares its path as\u0026hellip;\u0026rdquo; 说明你的 go.mod module path 与 vanity URL 不匹配。请将 go.mod 更新为 vanity URL。参见 为什么 go.mod 必须使用 vanity URL？\ngo get 报错 \u0026ldquo;no Go modules found\u0026rdquo; 检查 GOPRIVATE 是否包含了你的 vanity 域名：\ngo env GOPRIVATE 如果为空或缺少你的域名，设置它：\ngo env -w GOPRIVATE=gomod.io gvu list 中路由显示为 \u0026ldquo;Frozen\u0026rdquo; 冻结的路由表示你的 Pro 订阅已过期，账户已降级为 Verified（10 条路由），第 11 条起的路由被冻结。运行 gvu subscribe 续费 — Pro 重新激活后，所有冻结的路由会自动恢复。你也可以用 gvu remove 删除多余的路由。冻结路由的保留期为 90 天，超时未续费将被永久移除。\n运行 gvu add 时服务器返回 RATE_LIMITED 匿名用户有频率限制以防止滥用。等待几分钟后重试，或绑定邮箱（gvu auth bind）以获得更高的限额。\nWindows 运行 gvu.exe 时 Windows 显示\u0026quot;Windows 已保护你的电脑\u0026quot; 这是 Microsoft SmartScreen 安全机制 — 它会标记下载量尚少的新发布程序。绕过方法：\n点击**\u0026ldquo;更多信息\u0026rdquo;** 点击**\u0026ldquo;仍要运行\u0026rdquo;** 更好的替代方案（完全避免 SmartScreen 警告）：\n# 使用 Scoop 安装（自动配置 PATH，无 SmartScreen 警告） scoop bucket add gomodvanityurls https://github.com/gomodvanityurls/scoop-bucket scoop install gvu # 如果你有 shell 环境（WSL、Git Bash 等），使用 install.sh curl -fsSL gomodvanityurls.com/install.sh | bash 随着更多用户安装 gvu，SmartScreen 警告会逐渐消失。\nWindows 上如何更新 gvu？ 通过 Scoop 安装的：\nscoop update gvu 通过 install.sh 安装的（WSL/Git Bash）：\ncurl -fsSL gomodvanityurls.com/install.sh | bash 手动安装的： 从 GitHub Releases 下载最新 .exe 替换旧文件。\n","permalink":"https://gomodvanityurls.com/zh/docs/faq/","summary":"\u003ch2 id=\"module-path\"\u003eModule Path\u003c/h2\u003e\n\u003ch3 id=\"为什么-gomod-必须使用-vanity-url-而不是-githubcom\"\u003e为什么 \u003ccode\u003ego.mod\u003c/code\u003e 必须使用 vanity URL 而不是 \u003ccode\u003egithub.com/...\u003c/code\u003e？\u003c/h3\u003e\n\u003cp\u003e当你设置了 vanity URL（如 \u003ccode\u003egomod.io/mylib\u003c/code\u003e）后，Go 工具链会使用\u003cstrong\u003e导入路径\u003c/strong\u003e（即 vanity URL）来定位模块。\u003ccode\u003ego.mod\u003c/code\u003e 中的 \u003ccode\u003emodule\u003c/code\u003e 指令必须完全匹配：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-go\" data-lang=\"go\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#6272a4\"\u003e// go.mod — 正确\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003emodule gomod.io\u003cspan style=\"color:#ff79c6\"\u003e/\u003c/span\u003emylib\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#6272a4\"\u003e// go.mod — 错误\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003emodule github.com\u003cspan style=\"color:#ff79c6\"\u003e/\u003c/span\u003eyourorg\u003cspan style=\"color:#ff79c6\"\u003e/\u003c/span\u003emylib\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e如果不匹配，\u003ccode\u003ego get\u003c/code\u003e 和 \u003ccode\u003ego build\u003c/code\u003e 会报错：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-fallback\" data-lang=\"fallback\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ego: gomod.io/mylib@v0.1.0: parsing go.mod:\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    module declares its path as: github.com/yourorg/mylib\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    but was required as: gomod.io/mylib\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"如何将现有模块迁移到-vanity-url\"\u003e如何将现有模块迁移到 vanity URL？\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e添加 vanity URL 路由：\u003ccode\u003egvu add gomod.io/mylib https://github.com/yourorg/mylib.git\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e更新 \u003ccode\u003ego.mod\u003c/code\u003e：将 \u003ccode\u003emodule github.com/yourorg/mylib\u003c/code\u003e 改为 \u003ccode\u003emodule gomod.io/mylib\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e更新模块内所有内部 import 为新的 vanity 路径\u003c/li\u003e\n\u003cli\u003e打一个新版本标签：\u003ccode\u003egit tag v0.2.0 \u0026amp;\u0026amp; git push --tags\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e通知下游使用者更新 import 路径\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"能否同时保留-githubcom-和-vanity-url\"\u003e能否同时保留 \u003ccode\u003egithub.com/...\u003c/code\u003e 和 vanity URL？\u003c/h3\u003e\n\u003cp\u003e不行。Go modules 要求 \u003ccode\u003ego.mod\u003c/code\u003e 中的 \u003ccode\u003emodule\u003c/code\u003e 指令是唯一的标准路径。同一段代码不能有两个不同的 module path。选择其一并坚持使用。\u003c/p\u003e","title":"常见问题"},{"content":"通配路由让你用一条规则覆盖自定义域名前缀下的所有仓库，无需逐个注册。\n前提条件 Pro 账户（运行 gvu subscribe 升级） 已配置 DNS CNAME 的自定义域名 已安装 gvu CLI — 参见 快速开始 注意： 通配路由不支持默认的 gomod.io 域名，仅适用于自定义域名。\nRepo 通配（W1） 适用于同一 GitHub 组织或同一路径前缀下有多个仓库的场景。\n语法 gvu add \u0026#39;\u0026lt;域名\u0026gt;/\u0026lt;前缀\u0026gt;/*\u0026#39; \u0026#39;https://\u0026lt;主机\u0026gt;/\u0026lt;组织\u0026gt;/*.git\u0026#39; Shell 引号：* 在 shell 中必须用引号包裹以防止 glob 展开。对包含 * 的参数使用单引号（'...'）。\nvanity path 中的 * 匹配任意单个路径段。repo URL 中的 * 会被匹配到的路径段替换。\n示例 # 覆盖 go.mycorp.com/dept1/ 下的所有仓库 gvu add \u0026#39;go.mycorp.com/dept1/*\u0026#39; \u0026#39;https://github.com/dept1/*.git\u0026#39; 创建此规则后，go.mycorp.com/dept1/ 下的任何 go get 请求都会自动解析：\nimport \u0026#34;go.mycorp.com/dept1/auth\u0026#34; // → github.com/dept1/auth import \u0026#34;go.mycorp.com/dept1/config\u0026#34; // → github.com/dept1/config import \u0026#34;go.mycorp.com/dept1/utils\u0026#34; // → github.com/dept1/utils 无需逐个添加路由 — 新仓库立即生效。\nSubdir 通配（W2） 适用于 monorepo 中包含多个子目录 Go 模块的场景。结合 Go 1.25+ 的 subdir 支持，自动解析所有子包。\n语法 gvu add \u0026lt;域名\u0026gt;/\u0026lt;前缀\u0026gt;/\u0026lt;仓库\u0026gt; https://\u0026lt;主机\u0026gt;/\u0026lt;组织\u0026gt;/\u0026lt;仓库\u0026gt;.git \u0026#39;--subdir=*\u0026#39; --subdir 中的 * 会被请求中的子包路径段替换。\n示例 # 覆盖 monorepo 中的所有子包 gvu add go.mycorp.com/dept1/mono https://github.com/dept1/mono.git \u0026#39;--subdir=*\u0026#39; 创建此规则后：\nimport \u0026#34;go.mycorp.com/dept1/mono/api\u0026#34; // → github.com/dept1/mono (subdir: api) import \u0026#34;go.mycorp.com/dept1/mono/config\u0026#34; // → github.com/dept1/mono (subdir: config) import \u0026#34;go.mycorp.com/dept1/mono/worker\u0026#34; // → github.com/dept1/mono (subdir: worker) Go 1.25+ 工具链会 clone 仓库并从匹配的子目录中读取 go.mod。\n优先级规则 当多条规则可能匹配同一请求时，解析器按以下优先级排序：\n优先级 规则类型 示例 1（最高） 精确匹配 go.mycorp.com/dept1/auth（精确路由） 2 Subdir 通配（W2） go.mycorp.com/dept1/mono + --subdir=* 3 Repo 通配（W1） go.mycorp.com/dept1/* 示例：优先级实战 假设有以下规则：\n# 精确路由（优先级 1） gvu add go.mycorp.com/dept1/auth https://github.com/dept1/auth-v2.git # Repo 通配（优先级 3） gvu add \u0026#39;go.mycorp.com/dept1/*\u0026#39; \u0026#39;https://github.com/dept1/*.git\u0026#39; go get go.mycorp.com/dept1/auth → 解析到 auth-v2（精确匹配优先） go get go.mycorp.com/dept1/config → 解析到 github.com/dept1/config（通配匹配） 配额与限制 每条通配路由占 1 个 Pro 配额（共 50 个） 通配路由需要自定义域名 — 不支持 gomod.io Repo 通配（W1）和 Subdir 通配（W2）互斥，每条路由只能选一种 repo URL 中只允许一个 * 常见场景 场景 A：组织下 20+ 仓库 无需逐个添加：\n# 一条规则覆盖所有现有和未来的仓库 gvu add \u0026#39;go.mycorp.com/platform/*\u0026#39; \u0026#39;https://github.com/mycorp-platform/*.git\u0026#39; 场景 B：包含多个 Go 模块的 Monorepo # 一条规则覆盖所有子包 gvu add go.mycorp.com/infra/core https://github.com/mycorp/core.git \u0026#39;--subdir=*\u0026#39; 场景 C：混合使用精确路由和通配路由 # 通配规则覆盖大部分仓库 gvu add \u0026#39;go.mycorp.com/team/*\u0026#39; \u0026#39;https://github.com/myteam/*.git\u0026#39; # 用精确路由覆盖特定仓库（优先级更高） gvu add go.mycorp.com/team/legacy https://gitlab.com/myteam/legacy.git gvu add go.mycorp.com/team/fork https://github.com/upstream/fork.git 故障排查 go get 报错 \u0026ldquo;repository not found\u0026rdquo; 通配规则匹配到的仓库在 Git 托管平台上不存在。将 * 替换为实际包名来验证仓库 URL：\n# 如果 go get go.mycorp.com/dept1/foo 失败，检查： git ls-remote https://github.com/dept1/foo.git gvu add 拒绝通配路由 常见原因：\n错误 原因 解决方法 WILDCARD_PRO_ONLY 非 Pro 账户 运行 gvu subscribe INVALID_WILDCARD * 组合无效 确保 * 在路径末尾（/*）且在 repo URL 中 CUSTOM_DOMAIN_REQUIRED 使用了 gomod.io 改用自定义域名 通配路由已创建但子包无法解析 确保 GOPRIVATE 包含你的自定义域名：\ngo env -w GOPRIVATE=go.mycorp.com 详见通配路由。\n","permalink":"https://gomodvanityurls.com/zh/docs/wildcard-routing/","summary":"\u003cp\u003e通配路由让你用一条规则覆盖自定义域名前缀下的所有仓库，无需逐个注册。\u003c/p\u003e\n\u003ch2 id=\"前提条件\"\u003e前提条件\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePro\u003c/strong\u003e 账户（运行 \u003ccode\u003egvu subscribe\u003c/code\u003e 升级）\u003c/li\u003e\n\u003cli\u003e已配置 DNS CNAME 的\u003cstrong\u003e自定义域名\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e已安装 \u003ccode\u003egvu\u003c/code\u003e CLI — 参见 \u003ca href=\"/zh/docs/quickstart/#%E5%AE%89%E8%A3%85\"\u003e快速开始\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003e注意：\u003c/strong\u003e 通配路由\u003cstrong\u003e不支持\u003c/strong\u003e默认的 \u003ccode\u003egomod.io\u003c/code\u003e 域名，仅适用于自定义域名。\u003c/p\u003e\u003c/blockquote\u003e\n\u003ch2 id=\"repo-通配w1\"\u003eRepo 通配（W1）\u003c/h2\u003e\n\u003cp\u003e适用于同一 GitHub 组织或同一路径前缀下有多个仓库的场景。\u003c/p\u003e\n\u003ch3 id=\"语法\"\u003e语法\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egvu add \u003cspan style=\"color:#f1fa8c\"\u003e\u0026#39;\u0026lt;域名\u0026gt;/\u0026lt;前缀\u0026gt;/*\u0026#39;\u003c/span\u003e \u003cspan style=\"color:#f1fa8c\"\u003e\u0026#39;https://\u0026lt;主机\u0026gt;/\u0026lt;组织\u0026gt;/*.git\u0026#39;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eShell 引号\u003c/strong\u003e：\u003ccode\u003e*\u003c/code\u003e 在 shell 中必须用引号包裹以防止 glob 展开。对包含 \u003ccode\u003e*\u003c/code\u003e 的参数使用单引号（\u003ccode\u003e'...'\u003c/code\u003e）。\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003evanity path 中的 \u003ccode\u003e*\u003c/code\u003e 匹配任意单个路径段。repo URL 中的 \u003ccode\u003e*\u003c/code\u003e 会被匹配到的路径段替换。\u003c/p\u003e\n\u003ch3 id=\"示例\"\u003e示例\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#6272a4\"\u003e# 覆盖 go.mycorp.com/dept1/ 下的所有仓库\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egvu add \u003cspan style=\"color:#f1fa8c\"\u003e\u0026#39;go.mycorp.com/dept1/*\u0026#39;\u003c/span\u003e \u003cspan style=\"color:#f1fa8c\"\u003e\u0026#39;https://github.com/dept1/*.git\u0026#39;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e创建此规则后，\u003ccode\u003ego.mycorp.com/dept1/\u003c/code\u003e 下的任何 \u003ccode\u003ego get\u003c/code\u003e 请求都会自动解析：\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-go\" data-lang=\"go\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#ff79c6\"\u003eimport\u003c/span\u003e \u003cspan style=\"color:#f1fa8c\"\u003e\u0026#34;go.mycorp.com/dept1/auth\u0026#34;\u003c/span\u003e    \u003cspan style=\"color:#6272a4\"\u003e// → github.com/dept1/auth\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#ff79c6\"\u003eimport\u003c/span\u003e \u003cspan style=\"color:#f1fa8c\"\u003e\u0026#34;go.mycorp.com/dept1/config\u0026#34;\u003c/span\u003e  \u003cspan style=\"color:#6272a4\"\u003e// → github.com/dept1/config\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#ff79c6\"\u003eimport\u003c/span\u003e \u003cspan style=\"color:#f1fa8c\"\u003e\u0026#34;go.mycorp.com/dept1/utils\u0026#34;\u003c/span\u003e   \u003cspan style=\"color:#6272a4\"\u003e// → github.com/dept1/utils\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e无需逐个添加路由 — 新仓库立即生效。\u003c/p\u003e","title":"通配路由"},{"content":"个人使用永久免费 Anonymous Verified Pro 价格 免费 免费 见下方 总路由数 5 10 50 自定义域名 ✗ ✓ ✓ 域名绑定 ✗ ✗ ✓ (50) 短路径（\u0026lt; 4 字符） ✗ ✗ ✓ 通配路由 ✗ ✗ ✓（仅自定义域名） 多设备 ✗ ✓ ✓ 如何升级 Anonymous → Verified（免费） gvu auth bind user@example.com # 输入发送到邮箱的 6 位验证码 就这么简单。你现在拥有 10 个路由配额（gomod.io 和自定义域名共享）。\nVerified → Pro 订阅制。50 个路由配额（共享池）。\n定价 计费周期 CNY（微信支付 / 支付宝） USD（PayPal） 月付 ¥9.9 / 月 $3.99 / 月 年付 ¥79 / 年 $29.99 / 年 年付相比月付节省 37%。\n如何订阅 gvu subscribe 交互式流程会引导你完成以下步骤：\n选择计费周期（月付或年付） 扫描你偏好的支付方式的二维码 在转账备注中填写你的 User ID 输入交易单号的后 4 位字符 管理员会核实你的付款，通常在 24 小时内完成。验证通过后，账户会自动升级。\n支持的支付方式 方式 适用人群 微信支付 中国大陆用户 支付宝 中国大陆用户 PayPal 海外用户 Pro 有效期与续费 Pro 订阅自激活之日起，有效期为 30 天（月付）或 365 天（年付）。\n运行 gvu auth whoami 可查看到期日期和剩余天数 订阅过期后，账户降级为 Verified（10 条路由），超出部分会被冻结（不会立即删除） 运行 gvu subscribe 续费 — 所有冻结的路由会自动恢复 冻结超过 90 天仍未续费的路由将被永久移除 说明 所有路由类型共享同一个配额池 例如，一个 Verified 用户如果有 3 个自定义域名路由，则还剩 7 个 gomod.io 路由配额 gomod.io 是平台的默认域名，无需 DNS 配置即可立即使用 自定义域名需要添加 DNS CNAME 记录指向本服务 ","permalink":"https://gomodvanityurls.com/zh/pricing/","summary":"\u003ch2 id=\"个人使用永久免费\"\u003e个人使用永久免费\u003c/h2\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth style=\"text-align: center\"\u003eAnonymous\u003c/th\u003e\n          \u003cth style=\"text-align: center\"\u003eVerified\u003c/th\u003e\n          \u003cth style=\"text-align: center\"\u003ePro\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e价格\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e免费\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e免费\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e见下方\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e总路由数\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e5\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e10\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e50\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e自定义域名\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e✗\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e✓\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e✓\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e域名绑定\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e✗\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e✗\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e✓ (50)\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e短路径（\u0026lt; 4 字符）\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e✗\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e✗\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e✓\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e通配路由\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e✗\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e✗\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e✓（仅自定义域名）\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e多设备\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e✗\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e✓\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e✓\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2 id=\"如何升级\"\u003e如何升级\u003c/h2\u003e\n\u003ch3 id=\"anonymous--verified免费\"\u003eAnonymous → Verified（免费）\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egvu auth \u003cspan style=\"color:#8be9fd;font-style:italic\"\u003ebind\u003c/span\u003e user@example.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#6272a4\"\u003e# 输入发送到邮箱的 6 位验证码\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e就这么简单。你现在拥有 \u003cstrong\u003e10 个路由配额\u003c/strong\u003e（\u003ccode\u003egomod.io\u003c/code\u003e 和自定义域名共享）。\u003c/p\u003e\n\u003ch3 id=\"verified--pro\"\u003eVerified → Pro\u003c/h3\u003e\n\u003cp\u003e订阅制。\u003cstrong\u003e50 个路由配额\u003c/strong\u003e（共享池）。\u003c/p\u003e\n\u003ch4 id=\"定价\"\u003e定价\u003c/h4\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth style=\"text-align: center\"\u003e计费周期\u003c/th\u003e\n          \u003cth style=\"text-align: center\"\u003eCNY（微信支付 / 支付宝）\u003c/th\u003e\n          \u003cth style=\"text-align: center\"\u003eUSD（PayPal）\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: center\"\u003e月付\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e¥9.9 / 月\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e$3.99 / 月\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: center\"\u003e年付\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e¥79 / 年\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e$29.99 / 年\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cblockquote\u003e\n\u003cp\u003e年付相比月付\u003cstrong\u003e节省 37%\u003c/strong\u003e。\u003c/p\u003e","title":"定价"},{"content":" GitHub Issues 反馈 Bug、提交功能建议、浏览已有讨论。\n开源 更多渠道（Discord、X/Twitter）即将上线。\n","permalink":"https://gomodvanityurls.com/zh/community/","summary":"\u003cdiv class=\"community-grid\"\u003e\n\u003ca href=\"https://github.com/gomodvanityurls/gvu/issues\" class=\"community-card\" target=\"_blank\" rel=\"noopener\"\u003e\n  \u003ch3\u003eGitHub Issues\u003c/h3\u003e\n  \u003cp\u003e反馈 Bug、提交功能建议、浏览已有讨论。\u003c/p\u003e\n  \u003cspan class=\"community-badge\"\u003e开源\u003c/span\u003e\n\u003c/a\u003e\n\u003c/div\u003e\n\u003cp style=\"margin-top: 24px; color: #666;\"\u003e更多渠道（Discord、X/Twitter）即将上线。\u003c/p\u003e","title":"社区"}]