nginx配置rewrite时,如何确保URL重写规则的正确性和高效性?
- 虚拟主机
- 2025-11-30
- 3230
Nginx 配置 Rewrite:高效处理 URL 重写与重定向
Nginx 是一款高性能的 HTTP 和反向代理服务器,它以其轻量级、稳定性高、配置灵活等特点被广泛应用于各种场景,在 Nginx 的配置中,Rewrite 功能是实现 URL 重写和重定向的重要手段,可以帮助我们优化网站结构、提高用户体验,本文将详细介绍 Nginx 配置 Rewrite 的方法和技巧。
Rewrite 基础概念
-
Rewrite 规则
Rewrite 规则是指 Nginx 服务器在处理请求时,根据一定的规则对请求的 URL 进行修改,从而实现 URL 重写或重定向。
-
Rewrite 模块
Nginx 的 Rewrite 模块是处理 Rewrite 规则的核心模块,它负责解析和执行 Rewrite 规则。


Rewrite 配置步骤
开启 Rewrite 模块 在 Nginx 的配置文件中,首先需要开启 Rewrite 模块,具体操作如下:

http { ... server { ... location / { ... if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?$query_string last; } } } }
编写 Rewrite 规则 在 location 块中,我们可以编写 Rewrite 规则,以下是一个简单的 Rewrite 规则示例:
location /old/ { rewrite ^/old/(.*)$ /new/$1 permanent; }
这个规则将所有以 /old/ 开头的 URL 重定向到 /new/ 目录下,保持 URL 后缀不变。
使用 RewriteCond 和 RewriteRule RewriteCond 用于判断是否执行 RewriteRule,RewriteRule 用于定义具体的重写规则,以下是一个结合 RewriteCond 和 RewriteRule 的示例:
location /old/ { rewritecond $request_uri ~ /old/ rewritecond $request_uri !~ /old/(index|login)/ rewritecond $request_uri !~ /old/ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request_uri !~ ^/old$ rewritecond $request