# ============================================================ # Nginx 重定向配置示例 # ============================================================ # # 功能说明: # - HTTP to HTTPS 重定向 # - 域名重定向 # - 规范化 URL # # Lolly 对应配置: # server: # rewrite: # - pattern: "^http://(.*)$" # replacement: "https://$1" # flag: "permanent" # ============================================================ http { # HTTP to HTTPS 重定向 server { listen 80; server_name secure.example.com; # 方式一:rewrite rewrite ^(.*)$ https://$host$1 permanent; # 方式二:return(推荐,更高效) return 301 https://$host$request_uri; } # 域名重定向 server { listen 80; server_name old-domain.com; # 重定向到新域名 return 301 https://new-domain.com$request_uri; } # 规范化 URL server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; # 移除 www(规范化到无 www) if ($host = www.example.com) { return 301 https://example.com$request_uri; } # 或添加 www(规范化到 www) # if ($host = example.com) { # return 301 https://www.example.com$request_uri; # } location / { root /var/www/html; } } # 移除尾部斜杠 server { listen 80; server_name noslash.example.com; # 移除 URL 尾部斜杠(除目录外) rewrite ^/(.*)/$ /$1 permanent; location / { root /var/www/html; } } # 强制尾部斜杠(SEO 规范化) server { listen 80; server_name slash.example.com; # 非文件且无斜杠时添加 if (!-f $request_filename) { rewrite ^/(.*[^/])$ /$1/ permanent; } location / { root /var/www/html; } } # 基于路径的条件重定向 server { listen 80; server_name conditional.example.com; # 维护模式重定向 location / { if ($maintenance_mode) { return 302 /maintenance.html; } proxy_pass http://backend:8080; } location = /maintenance.html { root /var/www/maintenance; } } } # 重定向说明: # # 1. 301 vs 302: # - 301 永久重定向: # 搜索引擎更新索引 # 浏览器缓存重定向 # 用于永久性变更(域名迁移) # - 302 临时重定向: # 搜索引擎保持原 URL # 浏览器每次都请求 # 用于临时变更(维护、测试) # # 2. HTTP to HTTPS: # 推荐使用 return 而非 rewrite: # - return 更高效(不解析正则) # - 直接返回响应 # - 保持原始请求 URI # # 3. 规范化: # URL 规范化防止: # - 重复内容问题(SEO) # - 缓存失效 # - 站点统计混乱 # # 规范化类型: # - www vs non-www # - 尾部斜杠 # - HTTP vs HTTPS # - 路径大小写 # # 4. Lolly 支持: # - rewrite 配置列表 # - 支持所有 flag 参数 # - 正则表达式匹配 # - 捕获组引用