二、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文件
在浏览器中输入 访问看看:
可以看到自动重写为
这里重定向也可以使用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;
}