nginx网站301重定向怎么做?老站长血泪总结,别踩这些坑

发布时间:2026/6/18 17:18:35
nginx网站301重定向怎么做?老站长血泪总结,别踩这些坑

本文关键词:nginx网站301重定向怎么做

说真的,每次看到有人问nginx网站301重定向怎么做,我都想叹口气。这玩意儿看着简单,真搞起来全是坑。我干了这么多年SEO和运维,见过太多因为一个重定向没配好,导致权重掉光、收录消失的案例。今天不整那些虚头巴脑的理论,直接上干货,全是血泪教训。

首先,你得明白301是干嘛的。简单说,就是把旧网址永久指向新网址告诉搜索引擎“我搬家了,别找我了”。很多人喜欢用302,千万别!302是临时跳转,权重不传递,百度蜘蛛会一直来爬,但你不给它新地址,最后就是死循环。

我最近帮一个客户调nginx配置,他之前自己瞎改,结果全站打不开。我一看配置文件,好家伙,逻辑乱得像盘丝洞。正确的写法其实不难,但细节决定成败。

在nginx.conf或者对应的server块里,你需要加这样的代码:

server {

listen 80;

server_name old.com;

return 301 https://new.com$request_uri;

}

注意看,这里用的是return 301,而不是rewrite。有些老教程喜欢用rewrite ^(.*)$ https://new.com$1 permanent; 这种写法也能用,但return性能更好,解析更快。对于nginx网站301重定向怎么做这个问题,return是更优解。

这里有个大坑,很多人忘记加$request_uri。如果不加,所有旧页面都会跳转到新首页,内页权重全部丢失,这是自杀行为。必须带上$request_uri,保证子页面也能正确跳转。

还有,协议要统一。现在都HTTPS了,如果你旧站是HTTP,新站是HTTPS,一定要在重定向里写死https://。别偷懒用//,虽然也能跑,但有时候会出问题。

另外,循环重定向是常见错误。比如A指向B,B又指向A,或者配置写错了导致自己指向自己。检查方法很简单,用curl -I 命令测试。如果返回头里Location字段指向自己,或者出现301-302-301的循环,那就完了。我上次排查一个bug,找了半天,最后发现是配置里多写了一行include,导致规则冲突。

还有个小细节,www和非www的问题。很多人只重定向了www,忘了非www。比如访问example.com跳转到www.example.com,那反过来呢?最好两边都配好,或者统一到一个。我见过有人只配了www,结果非www的流量直接404,损失巨大。

对于nginx网站301重定向怎么做,还有一点要注意,就是缓存。浏览器会缓存301跳转,如果你改错了配置,刷新页面可能还是旧的跳转。这时候得清缓存,或者用无痕模式测试。别以为刷新一下就行,浏览器缓存有时候顽固得很。

再说说伪静态。如果你的旧站有动态参数,比如?id=123,重定向后最好保持参数不变。nginx的$request_uri会自动带上查询字符串,这点很方便。但如果你用了rewrite,可能需要手动拼接参数,容易出错。

最后,别指望配完就一劳永逸。上线后,用百度站长平台、Google Search Console监控跳转情况。看看有没有404,有没有错误跳转。我有个朋友,配完301后,第二天发现百度收录掉了50%,查了半天才发现是某个子目录没配好,导致蜘蛛进不去。

总之,nginx网站301重定向怎么做,核心就是:用return 301,带上$request_uri,统一HTTPS,检查循环,测试缓存。别信那些花里胡哨的插件,原生配置最稳。

如果你还在纠结具体配置,或者遇到了奇怪的跳转问题,别自己瞎琢磨了。有时候一个标点符号的错误,或者空格没注意,就能让你抓狂。找专业人士看一眼,比你自己折腾半天强。毕竟,流量就是钱,别在这上面栽跟头。

有问题可以直接留言,或者私信我,看到就回。咱们都是做技术的,互相帮衬点,少走弯路。