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

Gatsby如何将所有www页面请求重定向至对应非www版本

Gatsby 实现www域名全域301重定向到非www版本的可行方案

createRedirect 是Gatsby提供的同域路径级重定向API,本身不支持跨域名、全域通配的域名匹配规则,无法直接满足这类域名级重定向需求,可根据你的站点托管方式选择以下方案,优先推荐托管层配置,性能和SEO表现最好:

方案1:托管平台/边缘层配置重定向(最推荐)

域名级重定向放在请求接入层处理,不需要侵入业务代码,返回标准301状态码,对SEO友好,跳转延迟最低,是静态站点的首选实现方式:

  • 若使用Netlify托管:在项目static目录下新建_redirects文件,写入以下规则即可:
https://www.yourdomain.com/* https://yourdomain.com/:splat 301!

构建后该文件会自动输出到产物根目录,Netlify边缘节点会自动识别规则完成跳转。

  • 若使用Vercel托管:在项目根目录新建vercel.json,添加如下重定向配置:
{
  "redirects": [
    {
      "source": "/(.*)",
      "has": [{ "type": "host", "value": "www.yourdomain.com" }],
      "destination": "https://yourdomain.com/$1",
      "permanent": true
    }
  ]
}
  • 若使用Nginx自托管:在Nginx配置中单独添加www域名的server块,配置全域跳转:
server {
  listen 80;
  listen 443 ssl;
  server_name www.yourdomain.com;
  # 此处补充你的SSL证书配置
  return 301 https://yourdomain.com$request_uri;
}
  • 若域名接入Cloudflare解析:直接在Cloudflare控制台添加页面规则,匹配规则设为www.yourdomain.com/*,执行动作为「转发URL-301永久重定向」,目标地址设为https://yourdomain.com/$1即可,不需要修改项目代码。
  • 若使用Apache托管:安装gatsby-plugin-htaccess插件,在插件配置中开启nonWWW选项,构建时会自动生成包含www跳转规则的.htaccess文件到产物目录。

方案2:客户端兜底重定向(不推荐,仅作降级方案)

如果没有权限修改托管层配置,可以在客户端做兜底跳转,但这类跳转需要等页面JS加载完成后才会执行,会出现首屏闪烁,且搜索引擎无法识别为301永久重定向,会影响SEO表现。
在项目根目录的gatsby-browser.js中添加以下逻辑:

export const onClientEntry = () => {
  if (typeof window !== 'undefined' && window.location.host.startsWith('www.')) {
    const targetUrl = new URL(window.location.href);
    targetUrl.host = targetUrl.host.replace(/^www\./, '');
    window.location.replace(targetUrl.toString());
  }
};

注意:不要尝试用createRedirect枚举所有路径做跳转,一方面构建时会生成海量冗余重定向规则拖慢构建速度,另一方面无法覆盖动态生成的客户端路由,完全没有可行性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:27:18