nginx location中rewrite用法
时间: 2025-05-23 09:22:08 浏览: 32
### Nginx 中 `location` 块内 `rewrite` 指令的用法
在 Nginx 配置中,`rewrite` 指令常用于 URL 重写或跳转逻辑。它可以在 `server` 和 `location` 块中使用,主要用于动态修改请求路径或将用户引导到不同的资源地址[^1]。
#### 1. **基本语法**
`rewrite` 指令的基本形式如下:
```nginx
rewrite regex replacement [flag];
```
- `regex`: 正则表达式,用来匹配请求 URI。
- `replacement`: 替换后的目标路径或 URL。
- `[flag]`: 可选标志位,决定重写的动作模式(如立即停止后续规则、返回状态码等)。常见的标志有:
- `last`: 结束当前 `rewrite` 流程并进入新的查找阶段。
- `break`: 终止所有 `rewrite` 规则,不再继续处理。
- `redirect`: 返回临时重定向 (HTTP 状态码 302)。
- `permanent`: 返回永久重定向 (HTTP 状态码 301)[^2]。
---
#### 2. **示例配置**
##### 示例 1:基于参数匹配的跳转
假设需求为访问形如 `http://www.xjj.com/100-(100|200)-\d+.html` 的链接时,统一跳转到根目录页面 `http://www.xjj.com`。
以下是完整的配置代码:
```nginx
server {
listen 80;
server_name www.xjj.com;
# 定义 location 块
location / {
# 使用正则匹配请求 URI
if ($request_uri ~* ^/100-(100|200)-(\d+)\.html$) {
# 执行重定向操作
rewrite ^(.*)$ http://www.xjj.com permanent;
}
root html;
index index.html index.htm;
}
}
```
在此案例中,`if` 判断语句配合正则表达式实现了对特定 URL 的识别,而 `rewrite` 指令完成了永久重定向的功能[^2]。
---
##### 示例 2:内部路径转换
有时需要将外部可见的 URL 转换成服务器内部的实际文件路径。例如,当用户访问 `/article/id` 时,实际加载的内容来自 `/articles/id/index.html`。
配置如下:
```nginx
server {
listen 80;
server_name example.com;
location /article/ {
# 将 /article/<id> 映射为 /articles/<id>/index.html
rewrite ^/article/(.*)$ /articles/$1/index.html last;
}
location /articles/ {
root /var/www/html;
}
}
```
这里的关键在于 `rewrite` 指令通过替换规则改变了请求路径,并结合 `last` 标志确保新路径能够被正确解析[^1]。
---
##### 示例 3:带查询参数的重写
对于包含查询字符串的 URL,可能需要提取其中的部分作为新路径的一部分。例如,将 `/search?q=query_string` 转换为 `/results/query_string`。
配置如下:
```nginx
server {
listen 80;
server_name search.example.com;
location /search {
# 提取 q 参数值并拼接到新路径中
if ($args ~* q=([^&]+)) {
set $query $1;
rewrite ^.*$ /results/$query? break;
}
}
location /results/ {
root /var/www/search;
}
}
```
在这个例子中,`set` 指令辅助提取了查询参数,随后由 `rewrite` 实现了路径重构[^2]。
---
#### 3. **注意事项**
- 当多个 `rewrite` 规则共存时,需注意其执行顺序以及是否会产生循环调用问题。
- 若涉及敏感数据传输,应优先考虑 HTTPS 协议以保障信息安全。
- 对于复杂的 URL 改造场景,推荐先测试单条规则再逐步扩展整体结构。
---
###
阅读全文
相关推荐


















