You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vercel中获取部署域名而非带哈希的唯一部署URL?

获取Vercel项目的自定义/主域名方法

如果想获取Vercel项目的主域名(而非带唯一hash的部署临时URL),可以通过以下几种方式实现:

1. 手动配置固定环境变量

  • 进入Vercel项目的「设置」-「环境变量」页面,添加一个自定义变量(比如NEXT_PUBLIC_APP_DOMAIN),直接填入你的项目主域名——可以是Vercel分配的默认主域名(格式为<project-name>-<scope-slug>.vercel.app),也可以是你绑定的自定义域名。部署后所有实例都会读取这个固定值,不会包含部署专属的hash串。

2. 通过Vercel API查询

调用Vercel官方的项目域名查询接口,获取已绑定的所有域名,筛选出标记为主域名的条目。需要提前在Vercel账户中生成API令牌,并在代码中通过后端请求完成查询:

// 示例Node.js后端代码
const fetch = require('node-fetch');

async function getPrimaryDomain() {
  const projectId = process.env.VERCEL_PROJECT_ID;
  const apiToken = process.env.VERCEL_API_TOKEN;
  
  const response = await fetch(`https://api.vercel.com/v9/projects/${projectId}/domains`, {
    headers: {
      'Authorization': `Bearer ${apiToken}`
    }
  });
  const domains = await response.json();
  // 返回标记为primary的主域名,若无则返回第一个绑定的域名
  return domains.find(domain => domain.primary)?.name || domains[0]?.name;
}

注:该方法需要后端环境支持,前端无法直接调用(会跨域),且需妥善保管API令牌,避免泄露。

3. 从现有环境变量提取(仅适用于默认Vercel域名)

如果只能依赖VERCEL_URL环境变量,可以通过字符串处理去掉中间的hash部分:

// 示例:从带hash的Vercel URL中提取主域名格式
const getMainVercelDomain = (vercelUrl) => {
  const urlParts = vercelUrl.split('-');
  // 拼接项目名称和scope标识,加上vercel.app后缀
  return `${urlParts[0]}-${urlParts.at(-1)}.vercel.app`;
};

// 使用示例
const mainDomain = getMainVercelDomain(process.env.VERCEL_URL);

注意:这种方法仅对Vercel自动生成的默认域名有效,如果你绑定了自定义域名,直接使用自定义域名即可,无需做字符串处理。

内容的提问来源于stack exchange,提问作者Shamoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 21:55:06