nginx配置 rewrite用法
时间: 2024-05-08 15:13:12 浏览: 189
在Nginx配置中,rewrite指令用于重写URL,可以修改请求的URI或者重定向到其他URL。rewrite指令可以在server、location或if语句块中使用。
以下是rewrite指令的用法示例:
1. 修改URI:
```
rewrite ^/old-uri$ /new-uri last;
```
上述示例将匹配以/old-uri开头的请求,并将其重写为/new-uri。
2. 重定向到其他URL:
```
rewrite ^/old-url$ http://example.com/new-url permanent;
```
上述示例将匹配以/old-url开头的请求,并将其重定向到http://example.com/new-url。
3. 使用正则表达式捕获组:
```
rewrite ^/category/(\d+)$ /index.php?category=$1 last;
```
上述示例将匹配形如/category/123的请求,并将其重写为/index.php?category=123。
需要注意的是,rewrite指令的参数可以包含正则表达式,并且可以使用捕获组来提取匹配的部分。另外,rewrite指令还可以使用标志(flag)来控制重写行为,常用的标志包括last、break、redirect和permanent等。
相关问题
nginx rewrite使用方法
nginx的rewrite指令用于重写URL,可以修改请求的URI或者重定向请求。使用方法如下:
1. 在nginx配置文件中找到需要进行重写的location块。
2. 在该location块内使用rewrite指令。语法如下:
```
rewrite regex replacement [flag];
```
- regex:正则表达式,用于匹配需要重写的URL。
- replacement:替换规则,可以是一个新的URI或者一个完整的URL。
- flag:可选参数,用于指定rewrite指令的行为,比如是否继续匹配其他location块。
3. 举例说明:
- 重写URI:rewrite ^/old-uri$ /new-uri last;
这会将"/old-uri"重写为"/new-uri",并停止后续的重写规则匹配。
- 重定向到外部URL:rewrite ^/old-uri$ http://example.com/new-uri permanent;
这会将"/old-uri"重定向到"http://example.com/new-uri"。
4. 保存并重新加载nginx配置文件。
注意事项:
- rewrite指令只能在location块内使用。
- 正则表达式中可以使用捕获组,并在replacement中使用$1、$2等引用捕获到的内容。
- rewrite指令是按照配置文件中的顺序依次匹配的,匹配到第一个符合条件的规则后即停止匹配。
- 为了避免无限循环重写,应该谨慎使用rewrite指令。
希望这些信息对你有帮助!如果你有任何其他问题,请随时提问。
nginx rewrite
nginx的rewrite指令用于URL重写,可以根据匹配规则将URL重定向到指定的地址。在提供的引用中,有两个例子展示了nginx rewrite的用法。
引用中的配置文件使用了if指令和rewrite指令,当访问www.old.com时,将URL重写为www.new.com。具体配置如下:
```
server {
listen 80;
server_name www.old.com;
location / {
root html;
index index.html index.htm;
if ($host = 'www.old.com') {
rewrite ^/(.*)$ http://www.new.com/$1 permanent;
}
}
}
```
引用中的配置文件使用了location指令和rewrite指令,当访问以/upload/开头,以.php结尾的URL时,将URL重写为www.lic.com。具体配置如下:
```
server {
listen 80;
server_name www.lic.com;
location ~* /upload/.*\.php$ {
rewrite (.*) http://www.lic.com permanent;
}
location / {
root html;
index index.html index.htm;
}
}
```
引用中的配置文件使用了location指令和rewrite指令,当访问/abc/123.html时,将URL重写为www.lic.com。具体配置如下:
```
server {
listen 80;
server_name www.lic.com;
location ~* ^/abc/123.html {
rewrite (.*) http://www.lic.com permanent;
}
location / {
root html;
index index.html index.htm;
}
}
```
阅读全文