插件窝 干货文章 Nginx重定向配置实战,实现网站流量转移

Nginx重定向配置实战,实现网站流量转移

定向 return com Nginx 299    来源:    2025-04-17

Nginx重定向配置实战:实现网站流量转移

一、重定向基础概念

重定向(Redirect)是将用户请求从一个URL自动转发到另一个URL的过程。在网站迁移、域名更换或内容重组时,重定向是确保用户体验和SEO价值不流失的关键技术。

二、Nginx重定向类型

1. 临时重定向(302)

return 302 https://newdomain.com$request_uri;

2. 永久重定向(301)

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

3. 其他重定向状态码

  • 307 (临时重定向,保持请求方法)
  • 308 (永久重定向,保持请求方法)

三、常见重定向场景配置

1. 域名更换

server {
    listen 80;
    server_name olddomain.com www.olddomain.com;
    return 301 https://newdomain.com$request_uri;
}

2. HTTP到HTTPS重定向

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://example.com$request_uri;
}

3. 非www到www重定向

server {
    listen 80;
    server_name example.com;
    return 301 $scheme://www.example.com$request_uri;
}

4. 路径级别重定向

location /old-path/ {
    return 301 /new-path/;
}

5. 正则表达式匹配重定向

location ~* ^/products/(.*)$ {
    return 301 /shop/$1;
}

四、高级重定向技巧

1. 保留查询参数

if ($args ~* "^param=([^&]+)") {
    return 301 https://newdomain.com/newpath?custom=$1;
}

2. 条件重定向

if ($http_user_agent ~* "bot|spider|crawler") {
    return 301 https://newdomain.com/bots/$request_uri;
}

3. 基于地理位置的定向

geo $redirect_geo {
    default 0;
    US 1;
    UK 2;
}

server {
    if ($redirect_geo = 1) {
        return 301 https://us.newdomain.com$request_uri;
    }
    if ($redirect_geo = 2) {
        return 301 https://uk.newdomain.com$request_uri;
    }
}

五、性能优化与注意事项

  1. 避免过多重定向链:检查并减少重定向跳转次数
  2. 使用301而非302:除非确实需要临时重定向
  3. 测试重定向:使用curl命令测试: bash curl -I http://olddomain.com/path
  4. 监控重定向:确保没有404错误或循环重定向
  5. 更新SEO元素:确保新页面有正确的canonical标签

六、完整配置示例

server {
    listen 80;
    server_name oldsite.com www.oldsite.com;

    # 重定向所有HTTP到HTTPS
    return 301 https://newsite.com$request_uri;
}

server {
    listen 443 ssl;
    server_name oldsite.com www.oldsite.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    # 特定路径重定向
    location /legacy/ {
        return 301 https://newsite.com/modern/$request_uri;
    }

    # 其他请求重定向
    location / {
        return 301 https://newsite.com$request_uri;
    }
}

通过合理配置Nginx重定向,您可以平滑地将流量从旧网站转移到新网站,同时保持搜索引擎排名和用户体验。