插件窝 干货文章 Nginx重定向配置教程,实现URL转发和抓取

Nginx重定向配置教程,实现URL转发和抓取

定向 Nginx return request 446    来源:    2025-04-16

Nginx重定向配置教程:实现URL转发与抓取

一、基础重定向配置

1. 301永久重定向

server {
    listen 80;
    server_name old-domain.com;
    return 301 http://new-domain.com$request_uri;
}

2. 302临时重定向

server {
    listen 80;
    server_name temp-domain.com;
    return 302 http://main-domain.com$request_uri;
}

二、路径重定向

1. 基本路径重定向

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

2. 保留路径参数的重定向

location /old/ {
    return 301 /new$request_uri;
}

3. 正则表达式重定向

location ~ ^/products/([0-9]+) {
    return 301 /items/$1;
}

三、高级重定向配置

1. 基于条件的重定向

if ($http_user_agent ~* "bot|spider|crawler") {
    return 301 http://bot-domain.com$request_uri;
}

2. HTTPS强制跳转

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

3. 域名统一化

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

四、URL抓取配置

1. 防止特定路径被抓取

location /private/ {
    add_header X-Robots-Tag "noindex, nofollow";
    # 或者返回403
    # return 403;
}

2. 自定义robots.txt

location = /robots.txt {
    add_header Content-Type text/plain;
    return 200 "User-agent: *\nDisallow: /admin/\nDisallow: /private/";
}

3. 搜索引擎爬虫限流

limit_req_zone $binary_remote_addr zone=crawlers:10m rate=1r/s;

location / {
    limit_req zone=crawlers burst=5;
    # 正常配置...
}

五、重定向最佳实践

  1. 测试重定向:配置后使用curl测试:

    curl -I http://yourdomain.com/old-path
    
  2. 避免重定向链:确保重定向一步到位,不要形成A→B→C的链条

  3. 保留查询参数:使用$request_uri而非$uri以保留原始查询参数

  4. 日志监控:在Nginx日志中监控重定向状态

  5. SEO考虑

    • 使用301而非302进行永久重定向
    • 确保重定向后的页面有相同或更好的内容
    • 在Google Search Console中提交URL变更

六、常见问题解决

  1. 重定向循环

    • 检查是否有多个重定向规则相互触发
    • 使用curl -L -v URL跟踪重定向路径
  2. 丢失查询参数

    • 确保使用$request_uri而非$uri
    • 检查是否有其他规则过滤了查询参数
  3. 性能优化

    • 减少重定向链长度
    • 对高频访问的重定向考虑使用缓存

通过以上配置,您可以灵活实现各种URL转发需求,同时控制搜索引擎的抓取行为,优化网站结构和SEO表现。