TapCub 正式上线:统计、分析、客服一个平台免费用

免费工具 301 重定向规则生成器

一行一条,先写旧地址再写新地址,复制 Nginx(宝塔面板可用)、Apache、Cloudflare、Vercel 或 Netlify 的规则。生成之前先把整份清单查一遍:跳到另一个跳转的链式跳转、死循环、同一个网址跳到两个地方、带不带斜杠的重复。

  • 7 种输出格式
  • 拉直链式跳转,拦下死循环
  • 本地生成
生成器

从清单生成重定向规则

示例是一次小型网站改版:有一条链式跳转、一条冲突、一个带参数的旧网址和一个旧域名。换成你自己的清单,比如从 Excel 里复制的两列。

旧地址在前、新地址在后,用空格、Tab、逗号或 -> 隔开。可以写路径(/old)或完整网址。行末加 301、302、307、308 可以单独指定这一行的状态码。

永久搬迁用 301 或 308;只有真正临时的才用 302 或 307。

旧网址上的 ?utm_source=… 等参数怎么处理。

Cloudflare 规则需要主机名;也用来区分自己的网址和其它域名。

重定向

6

写进规则的条数

链式跳转

1

清单里发现的

跳过的行

1

错误、重复、循环

redirects.conf
# Generated by TapCub redirect generator
# Paste inside the server { } block of your site, then run: nginx -t && nginx -s reload
location = /old-pricing.html { return 301 /pricing$is_args$args; }
location = /news/2019/seo.html { return 301 /guides/seo$is_args$args; }
location = /blog/seo { return 301 /guides/seo$is_args$args; }
location = /blog/seo/ { return 301 /guides/seo$is_args$args; }
if ($request_uri = /product.php?id=42) { return 301 /products/blue-mug; }
location = /about-us { return 301 /about$is_args$args; }
location = /about-us/ { return 301 /about$is_args$args; }

# Old host old.example.cn: a separate server block (add your listen / ssl_certificate lines)
server {
    server_name old.example.cn;
    location = /sale { return 301 https://example.cn/deals$is_args$args; }
    location = /sale/ { return 301 https://example.cn/deals$is_args$args; }
}

复制进配置文件或直接下载。先在测试站试,再抽查几个旧网址的状态码。

检查结果

  • 错误第 6 行「/about-us」在第 5 行已经跳到 /about。只用第一条:一个网址只能跳到一个地方。
  • 提示第 2 行已拉直链式跳转:「/news/2019/seo.html」现在直接跳到 /guides/seo,不再经过 /blog/seo/。
  • 提示第 7 行有 1 行属于其它域名,已放进单独的 server 块,记得补上 listen 和证书配置。宝塔里可以给旧域名单独建一个站点再粘贴。
全部在你的浏览器里计算。这里输入的任何内容都不会上传,TapCub 也不会保存。

版本 v1.0更新于 更新记录

结果怎么读

部署之前,检查帮你拦下了什么

多年改版累积下来的重定向清单很少是干净的。下面这些问题,工具是对整份清单查,而不是一行一行看。

链式跳转

A → B → C:旧网址跳到的页面又跳了一次。每一跳都多一次往返,Google 的爬虫最多跟 10 跳就放弃。开启「直接指向最终地址」后,A 会直接写成跳到 C。

死循环

A → B 且 B → A,或者更长的一圈。浏览器会报「重定向次数过多」。循环里的行会先排除,等你确定内容到底在哪个网址。

冲突和重复

同一个旧网址写了两次、目标不同。服务器只用第一条匹配,第二行永远不生效。Nginx 里两个相同的 location = 甚至会导致配置检查失败、无法重载。

末尾斜杠和参数

对服务器来说 /old 和 /old/ 是两个网址,工具可以一起覆盖。utm_source、百度推广的点击参数默认原样带过去,推广数据不会因为跳转断掉。

Google 把 301 和 308 当作「新网址应被收录」的强信号,302 和 307 是弱信号。百度站长平台另有「网站改版」工具,整站换域名或换目录结构时,在那里提交新旧网址对应规则。重定向上线后至少保留一年,外链和收藏夹会在很久之后还带来访问。

怎么用

四步完成一次安全改版

写规则是容易的部分,测试才是防止掉流量的关键。

  1. 1

    列出新旧网址

    从统计报表、百度搜索资源平台、Search Console 或爬虫工具导出旧网址,给每个找到最接近的新页面。不要全部跳到首页。

  2. 2

    粘贴并选平台

    选网站实际运行的环境。用宝塔面板的选 Nginx(或 Apache),粘贴到「网站 → 设置 → 配置文件」的 server 块里;前面有 Cloudflare 的,规则在 CDN 上执行,请求不会到你的服务器。

  3. 3

    处理检查结果

    解决冲突和循环,让工具拉直链式跳转,再复制或下载。

  4. 4

    部署并测试

    Nginx 先 nginx -t 检查再重载,然后打开几个旧网址,或用 curl -I 旧网址 确认状态码和 Location。

语法

同一条重定向,五个平台的写法

同一条规则(/old-pricing → /pricing,301,保留参数)在各平台的写法。全部用精确匹配,/old-pricing-2024 不会被误伤。

  • Apache mod_alias 的 Redirect 是前缀匹配(/old 会连 /old/任何内容 一起跳),所以工具用精确匹配的 RedirectMatch
  • .htaccess 里 RewriteRule 的匹配串不带开头的斜杠
  • Nginx 的 return 不会自动带参数,要写 $is_args$args
  • 宝塔自带的「重定向」功能只有 301 / 302、要按条添加;批量迁移直接把生成的规则贴进配置文件更快
同一条 301 重定向在各平台的写法
平台规则参数
Apache(mod_rewrite)RewriteRule ^old-pricing/?$ /pricing [R=301,L]默认保留;加 QSD 丢弃
Apache(mod_alias)RedirectMatch 301 "^/old-pricing/?$" "/pricing"总是保留
Nginx / 宝塔location = /old-pricing { return 301 /pricing$is_args$args; }要写 $is_args$args
Cloudflare 批量(CSV)example.cn/old-pricing,https://example.cn/pricing,301,TRUE,…PRESERVE_QUERY_STRING 列
Vercel{ "source": "/old-pricing", "destination": "/pricing", "statusCode": 301 }总是带上
Netlify/old-pricing /pricing 301自动带上
完整例子

示例清单经过检查后的样子

输入 7 行,输出 6 条规则。下面是每个问题行的处理结果(默认平台 Nginx)。

示例重定向清单的整理过程
行输入结果
2–3/news/2019/seo.html → /blog/seo → /guides/seo拉直:第 2 行直接跳到 /guides/seo
3/blog/seo/(带斜杠)也匹配 /blog/seo,所以第 2 行构成了链式跳转
4/product.php?id=42用 if ($request_uri = …) 精确匹配参数,旧参数不再带过去
6/about-us → /company跳过:第 5 行已经把 /about-us 跳到 /about
7https://old.example.cn/sale放进旧域名单独的 server 块

把平台换成 Cloudflare 批量重定向,第 4 行会被报出来:批量列表不能匹配参数。

常见错误

会掉流量的重定向错误

大多来自一条一条地加规则,从来不看整份清单。

留着链式跳转

每次改版都多一跳,改了三次版的老链接可能要跳四次。把旧规则改成直接指向现在的网址。

全部跳到首页

跳到不相关的页面,Google 可能当作软 404 处理。给每个网址找最接近的新页面,实在没有就让它 404。

永久搬迁用了 302

302 告诉搜索引擎旧网址还会回来,旧网址可能继续被收录。永久搬迁用 301 或 308。

过早删掉重定向

外链、收藏夹、老的推广链接会在几年里持续带来访问。规则至少保留一年,能长期保留更稳妥。

常见问题

301 重定向常见问题

还有其他问题?

直接和 TapCub 团队聊聊——工作日通常几小时内回复。

301 重定向是什么?

一种 HTTP 响应:状态码 301,加一个 Location 头,告诉浏览器和搜索引擎页面已经永久搬到新地址。搜索引擎随后收录新网址,并把旧网址的权重信号合并过去。308 意思相同,但会保留请求方法(POST 仍是 POST)。

301 还是 308?302 还是 307?

Google 对 301 和 308 一视同仁:永久、强信号;302 和 307 是临时、弱信号。普通页面搬迁用 301;只有表单或接口会 POST 到旧网址时才需要 308。302、307 只用于维护之类的短期跳转。

宝塔面板怎么批量做 301?

宝塔自带的「重定向」要按条添加,并且只有 301 / 302 两种。批量时选 Nginx,把生成的规则粘贴进「网站 → 设置 → 配置文件」的 server { } 块里保存即可;用 Apache 的站点选 .htaccess 版本,放进网站根目录。

带参数的网址怎么跳转?

Apache 要用 RewriteCond 匹配 %{QUERY_STRING},Nginx 可以比较 $request_uri,Vercel 用 has 条件,Cloudflare 重定向规则可以判断 http.request.uri.query;Cloudflare 批量重定向完全不能匹配参数。工具会按平台写出对应写法。

参数要保留还是丢弃?

多数情况保留:UTM、百度推广和广告点击参数跳转后还在,推广效果不会算错。旧参数在新站上没有意义时丢弃,比如 ?id=42 的老商品页换成了干净的新网址。

网站改版要不要用百度的「网站改版」工具?

整站换域名、换目录结构时可以用:先在服务器上做好 301,再到百度搜索资源平台的「网站改版」提交新旧网址的对应规则,让百度知道这是一次改版。零散几个页面的跳转只做 301 即可。

清单会上传吗?

不会。全部在你的浏览器里生成,不会发给 TapCub,工具也没有分享链接。

更新记录

更新记录

这个工具的新功能、修复和数据更新,最新的在前。

  1. · v1.0

    首次上线首次上线。

缺功能或发现错误?告诉我们,常被提到的会排进下次更新。 全部工具更新

看清数据,找到增长。

每一次点击,都有数据依据。装好一行代码,1 分钟看到第一批数据。

无需信用卡 · 统计与客服都有免费版 · 统计无 Cookie