Nginx 高级扩展实例(2)

二、URL重写:
格式如下
rewrite <源匹配类型> <替换后的地址> <标识>

例:rewrite /images/(.*\.jpg) $1 permanent;

将访问本机的任何以.jpg结尾的都永久重定向到下的.jpg去


标识有以下四种:
last —— 持续标识,替换后的规则在继续匹配,拿更改后的地址重新去匹配,会产生死循环
 例:location /image/ {
          rewrite /images/.*\.jpg last;
  }
  这样就残生死循环了,所以在定义的时候要避免重复
  
break —— 结束标识,表示到此为止,不再继续匹配
redirect —— 临时重定向标识,http协议代码为302
permanent —— 永久重定向标识,http协议代码为301

例:在192.168.80.146上定义重写如下
location / {
                rewrite ^/forum/(test.html)$ $1 permanent;
        }

# server nginx restart

并在192.168.80.143上建立/var/www/html/bbs/test.html文件

在浏览器中输入 访问看看:

Nginx 高级扩展实例


可以看到自动重写为

这里重定向也可以使用if指令:
语法: if (condition) { ... }
应用环境: server, location

条件:
1、变量名; false values are: empty string ("", or any string starting with "0";)
2、对于变量进行的比较表达式,可使用=或!=进行测试;
3、正则表达式的模式匹配:
 ~  区分大小的模式匹配
 ~* 不区分字母大小写的模式匹配
 !~ 和 !~* 分别对上面的两种测试取反
4、测试文件是否存在-f或!-f
5、测试目录是否存在-d或!-d
6、测试目录、文件或链接文件的存在性-e或!-e
7、检查一个文件的执行权限-x或!-x

例:如果用户请求的页面不存在,实现自定义跳转:

if (!-f $request_filename) {
      rewrite ^(/.*)$ /rewrite.html permanent;
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/c114760043a40e3f050f6eb297f84645.html