插件窝 干货文章 nginx如何实现301跳转

nginx如何实现301跳转

example server 定向 com 120    来源:    2025-04-05

Nginx 实现301永久重定向的方法

301重定向是永久性重定向,对SEO友好,会将原始URL的权重传递给新URL。以下是几种在Nginx中实现301跳转的方法:

1. 单个URL重定向

server {
    listen 80;
    server_name example.com;

    location /old-page {
        return 301 http://example.com/new-page;
    }
}

2. 整个域名重定向

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

3. 非www跳转到www

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

4. 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. 使用rewrite指令

server {
    listen 80;
    server_name example.com;

    rewrite ^/old-url$ http://example.com/new-url permanent;
    # 或者
    rewrite ^/old-path/(.*)$ http://example.com/new-path/$1 permanent;
}

注意事项

  1. return 301rewrite更高效,推荐优先使用
  2. 确保重定向后的URL是完整的绝对路径(包含http://或https://)
  3. 修改配置后需要重载Nginx:nginx -s reload
  4. 使用$request_uri可以保留原始请求的URI和参数
  5. 对于复杂的重定向规则,可以使用正则表达式匹配

测试方法

修改配置后,可以使用以下命令测试:

curl -I http://example.com/old-url

应该能看到类似这样的响应:

HTTP/1.1 301 Moved Permanently
Location: http://example.com/new-url

301重定向会被浏览器缓存,测试时可能需要清除浏览器缓存或使用隐私模式。