Nginx rewrite(URL)地址重定向

3,054 阅读2分钟

一、 Nginx 配置文件使用(nginx.conf)

二、Nginx rewrite 介绍

  • 主要功能是实现 URL 地址重写,需要 PCER 的支持。

  • 应用位置:serverlocationif 中都可以。

  • 语法:

    rewrite 是实现 URL 重写的关键指令,根据匹配 URL 部分的内容,重定向到目标 URL 上,结尾是 flag 标记。

    rewrite 匹配URL(正则表达式) 目标URL [flag];
    
  • flag 标记符号

    Flag 标记符号说明
    last本条规则匹配完成后,继续向下匹配新的 location URL 规则
    break本条规则匹配完成即终止,不再匹配后面的任何规则
    redirect返回 302 临时重定问,浏览器地址栏会显示跳转后的 URL 地址
    permanent返回 301 永久重定向,浏览器地址栏会显示跳转后的 URL 地址
    • lastbreak 用来实现 URL 重写,浏览器地址栏的 URL 地址不变,单在服务器端访问的程序及路径发生了变化。

    • redirectpermanent 用来实现 URL 跳转,浏览器地址栏会显示跳转后的 URL 地址。

    • redirectpermanent 的区别

      • 3011 永久重定向,浏览器会记住,比如 a.com 网站 301b.com 网站,浏览器输入 a.com 时,就不请求 a.com 了,而是直接请求 b.com 了。

      • 302 临时重定向,浏览器不记住,比如 a.com 网站 302b.com 网站,浏览器输入 a.com 时,还是请求 a.com,根据 a.com 网站响应的 location 内容,再去请求 b.com 网址。

三、Nginx rewrite 案例使用

  • 简单案例:访问 index.html 重写到 abc.html

    • nginx.conf:

      server {
        listen 8081;
        server_name www.xyq.com;
        location / {
          root /usr/local/var/xyq;
          index index.html;
        }
        rewrite ^/index\.html /abc.html permanent;
      }
      

      配置好之后,执行 $ nginx -s reload,打开 http://www.xyq.com:8081http://www.xyq.com:8081/index.html,因为配置的主页面就是 index.html 所以可以不写。

  • 简单案例:访问 index.html 重写到 百度

    server {
      listen 8081;
      server_name www.xyq.com;
      location / {
        root /usr/local/var/xyq;
        index index.html;
      }
      rewrite ^/index\.html https://www.baidu.com permanent;
    }
    

    刷新 nginx 之后打开 http://www.xyq.com:8081 就会跳转到百度。