插件窝 干货文章 怎么利用Nginx实现URL重定向

怎么利用Nginx实现URL重定向

定向 server example com 913    来源:    2025-04-21

利用Nginx实现URL重定向的方法

Nginx提供了多种方式来实现URL重定向,以下是几种常见的方法:

1. 使用return指令(推荐)

server {
    listen 80;
    server_name olddomain.com;
    return 301 http://newdomain.com$request_uri;
}
  • 301表示永久重定向,302表示临时重定向
  • $request_uri会保留原始请求的URI部分

2. 使用rewrite指令

server {
    listen 80;
    server_name example.com;

    # 重定向特定路径
    rewrite ^/oldpath$ /newpath permanent;

    # 正则表达式匹配重定向
    rewrite ^/user/(\d+)$ /profile/$1 permanent;
}
  • permanent表示301重定向,redirect表示302重定向
  • 正则表达式可以更灵活地匹配URL模式

3. 重定向整个网站

server {
    listen 80;
    server_name oldsite.com www.oldsite.com;
    return 301 http://newsite.com;
}

4. 重定向非www到www(或反之)

# 非www重定向到www
server {
    listen 80;
    server_name example.com;
    return 301 http://www.example.com$request_uri;
}

# www重定向到非www
server {
    listen 80;
    server_name www.example.com;
    return 301 http://example.com$request_uri;
}

5. HTTP到HTTPS重定向

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

6. 条件重定向

# 根据用户代理重定向
server {
    listen 80;
    server_name example.com;

    if ($http_user_agent ~* "bot") {
        return 301 http://bot.example.com$request_uri;
    }
}

最佳实践提示

  1. 对于永久性URL更改,使用301重定向
  2. 测试时可以先使用302重定向,确认无误后再改为301
  3. 重定向后清除浏览器缓存进行测试
  4. 使用curl -I http://example.com检查重定向响应头
  5. 修改配置后记得重载Nginx:nginx -s reload

需要更具体的重定向场景或遇到问题,可以提供更多细节我会给出针对性建议。