nginx中的rewrite语句
admin
2023-03-10 06:42:15
0次

rewrite命令使用正则表达式来匹配请求URI,被匹配到的URI将会被重写,可以实现内部URL重写或URL重定向。rewrite命令可以出现在server、location、if语句块中。多个rewrite语句按照它们在配置文件中出现的位置从上往下顺序执行,匹配到某一条rewrite语句后是否会继续向下执行或后续如何处理,由那条语句决定。

 

命令语法格式:

rewrite  正则表达式  新URI  [flag];

  • "正则表达式"用于匹配"请求URI",匹配到的URI将会被替换成"新URI"。

 

  • "新URI"可以是单纯的URI,也可以是一个完整的URL地址:

    • 当"新URI"是单纯的URI时,称作内部URL重写。此时本条rewrite语句会按照规则将请求URL重写成新的URL,但重写完成后的行为则受 [flag] 选项控制。

    • 当"新URI"是一个完整的URL地址,即以"http://"、"https://"或"$scheme"开头的地址时,称作URL重定向。此时本条rewrite规则重写完成后,服务端不再进行进一步处理,它会立刻将得到的新URL返回给客户端(301、302等重定向的形式),服务端处理完成,客户端则会重新发起对新URL的请求。

 

  • [flag] 选项用于调控重写的行为,它的取值可能是:

    • last:重写完成后,会停止继续处理当前区块所有属于ngx_http_rewrite_module模块的语句(即不会继续匹配当前区块余下的rewrite语句或其它属于该模块的语句)。重写得到的新URL会重新匹配所有location语句,以进行进一步处理。

    • break:重写完成后,会停止继续处理当前区块所有属于ngx_http_rewrite_module模块的语句(即不会继续匹配当前区块余下的rewrite语句或其它属于该模块的语句),就像break命令一样,不会有进一步的动作。

    • redirect:重写完成后,返回带有302代码(临时重定向)的新URL给客户端,服务端处理完成。该flag只有在"新URI"不是完整的URL地址时才会生效。

    • permanent:重写完成后,返回带有301代码(永久重定向)的新URL给客户端,服务端处理完成。

 

示例:

先在网页根目录下创建一些目录和文件用于后续测试。

[root@gw ~]# mkdir -p /usr/local/nginx/html/dir/subdir1

[root@gw ~]# mkdir -p /usr/local/nginx/html/dir/subdir2

[root@gw ~]# echo 'subdir1 testfile.html' > /usr/local/nginx/html/dir/subdir1/testfile.html  

[root@gw ~]# echo 'subdir2 testfile.html' > /usr/local/nginx/html/dir/subdir2/testfile.html

修改nginx配置文件,定义rewrite规则,可以在server语句块中定义。

[root@gw ~]# vim /usr/local/nginx/conf/nginx.conf

server {

        rewrite  ^/dir/(.*)/.*$  /dir/$1/testfile.html  break;

}

上面rewrite规则的含义是:若请求URI符合^/dir/(.*)/.*$,则将其重写为/dir/$1/testfile.html。$1是引用请求URI中第一个括号括起来的内容,$2、$3等类似(如果有的话)。这样,当请求是http://172.16.111.114/dir/subdir1/whaterver这种时,它将变成访问/dir/subdir1/testfile.html;若请求是http://172.16.111.114/dir/subdir2/whaterver时,它将访问/dir/subdir2/testfile.html这个文件。如下所示:

nginx中的rewrite语句

打开浏览器,按下F12键,切换到网络选项卡,再在浏览器地址栏中输入要访问的URL地址,就可以看到是否有URL重写或重定向:

nginx中的rewrite语句

 

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...