nginx rewrite url重写

在Nginx中,URL重写(Rewrite)是通过rewrite指令实现的,它允许你根据特定的规则将请求的URL修改为另一个URL,从而实现重定向、URL美化以及其他URL相关的操作。以下是一些常用的Nginx rewrite重写规则和示例:

  1. 重写到固定URI
    rewrite ^/old-uri$ /new-uri last;
    ```

将所有以`/old-uri`开头的请求重定向到`/new-uri`<b class="card40_249__sup_a7f6" data-sup="sup">3</b>。

2. **重写到带变量的URI** <b class="card40_249__sup_a7f6" data-sup="sup">2</b>:

```nginx
    rewrite ^/product/(\d+)$ /product?id=$1 last;
    ```

将所有以`/product/`开头且包含一个数字的URI重写为`/product?id=`加上该数字<b class="card40_249__sup_a7f6" data-sup="sup">1</b>。

3. **添加查询参数** :

```nginx
    rewrite ^/product$ /product?id=123 last;
    ```

将所有以`/product`开头的请求重写为`/product?id=123`<b class="card40_249__sup_a7f6" data-sup="sup">1</b>。

4. **修改查询参数** :

```nginx
    rewrite ^/product?id=(\d+)$ /product?id=$1&category=1 last;
    ```

将所有以`/product`开头且包含一个数字的URI重写为`/product?id=`加上该数字,并添加`&category=1`<b class="card40_249__sup_a7f6" data-sup="sup">2</b>。

5. **移除查询参数** :

```nginx
    rewrite ^/product?id=(\d+)&category=1$ /product?id=$1 last;
    ```

将所有以`/product`开头且包含一个数字和`&category=1`的URI重写为`/product?id=`加上该数字。

6. **将GET请求重写为POST请求** <b class="card40_249__sup_a7f6" data-sup="sup">2</b>:

```nginx
    if ($request_method = GET) {
        rewrite 1 break;
        proxy_set_header X-HTTP-Method-Override POST;
    }
    ```

如果请求方法是GET,则将其重写为POST请求<b class="card40_249__sup_a7f6" data-sup="sup">2</b>。

7. **临时重定向** :

```nginx
    rewrite ^/old-uri$ /new-uri redirect;
    ```

将所有以`/old-uri`开头的请求临时重定向到`/new-uri`<b class="card40_249__sup_a7f6" data-sup="sup">2</b>。

8. **永久重定向** :

```nginx
    rewrite ^/old-uri$ /new-uri permanent;
    ```

将所有以`/old-uri`开头的请求永久重定向到`/new-uri`<b class="card40_249__sup_a7f6" data-sup="sup">2</b>。

9. **条件判断** <b class="card40_249__sup_a7f6" data-sup="sup">4</b>:

```nginx
    if ($host = example.com) {
        rewrite 1 break;
    }
    ```

只对`example.com`域名下的请求进行重写。

10. **URL美化** :

```nginx
    rewrite ^/products/([0-9]+)$ /products.php?id=$1 last;
    ```

将所有以`/products/`开头且包含一个数字的URI重写为`/products.php?id=`加上该数字<b class="card40_249__sup_a7f6" data-sup="sup">1</b>。

11. **保留原始URL中的其他部分** <b class="card40_249__sup_a7f6" data-sup="sup">5</b>:

```nginx
    rewrite ^/old-url/(.*)$ /new-url/$1 permanent;
    ```

将所有以`/old-url/`开头的URL重写为以`/new-url/`开头的URL,同时保留原始URL中的其他部分<b class="card40_249__sup_a7f6" data-sup="sup">5</b>。

这些规则和示例展示了Nginx中URL重写的强大功能,可以根据实际需求进行灵活配置。在使用重写时,建议先备份配置文件,并在开发或测试环境中进行充分测试,以确保重写规则按预期工作。
Top