nginx rewrite重写url
时间: 2024-10-08 20:10:11 浏览: 8
Nginx是一款高性能的开源Web服务器及反向代理服务器,它支持URL重写(Rewrite)功能,可以对HTTP请求的URL进行规则性的修改。URL重写主要用于改变客户端浏览器看到的URL,同时保持服务器的实际请求地址不变。在Nginx配置文件(通常是`nginx.conf`或`.htaccess`)中,你可以使用`rewrite`指令来进行如下操作:
1. **基于正则表达式匹配**:比如将所有 `.html` 结尾的 URL 转换为 `/index.html` 或者去掉动态查询字符串。
```nginx
rewrite ^/(.*)\.html$ /$1 index.html break;
```
2. **基于路径部分替换**:替换URL中的某些路径片段,如从 `www.example.com/user/login?email=foo` 重写为 `www.example.com/login/success`。
```nginx
rewrite ^/user/login(.*)$ /login/success last;
```
3. **基于条件的重写**:可以根据变量值或其他特定条件来决定是否执行重写。
```nginx
if ($request_uri ~* '/old-page') {
rewrite ^/old-page(/.*)?$ /new-page$1 permanent;
}
```
使用`last`, `break`, 或 `permanent`关键字可以指定重定向的行为。记得在`server`块或`location`块内添加`rewrite`指令,并且保存配置文件后重启Nginx服务以应用更改。