URL重写就是首先获得一个进入的URL请求然后把它重新写成网站可以处理的另一个URL的过程。举个例子来说,如果通过浏览器进来的UR是“UserProfile.aspx?ID=1”那么它可以被重写成 “UserProfile/1.aspx”,这样的URL,这样的网址可以更好的被网站所阅读。
URL重写和反向代理的区别是会改变访问的地址,也就是用户会察觉到
URL 模块语法
set 设置变量
if 负责语句中的判断
return 返回返回值或URL
break 终⽌后续的rewrite规则
rewrite 重定向URL
1.set指令
set指令 ⾃定义变量
set $variable value;
示例:
将任意匹配 重写为 http://www.ayitula.com/baism
location / {
set $name baism;
rewrite ^(.*)$ http://www.ayitula.com/$name;
}
2.if指令
if 指令 负责判断
if (condition) { ... }
示例:
如果是使用chrome访问就返回403
location / {
root html;
index index.html index.htm;
if ($http_user_agent ~* 'Chrome') {
return 403;
#return http://www.jd.com;
}
}
3.return
return 指令 定义返回数据
return code [text];
return code URL;
return URL;
示例:
如果是使用chrome访问就返回403
location / {
root html;
index index.html index.htm;
if ($http_user_agent ~* 'Chrome') {
return 403;
#return http://www.jd.com;
}
}
4.break
break 指令 停⽌执⾏当前虚拟主机的后续rewrite指令集
示例:
就算是使用chrome访问也不返回403
location / {
root html;
index index.html index.htm;
if ($http_user_agent ~* 'Chrome') {
break;
return 403;
}
}
5.rewrite
rewrite <regex> <replacement> [flag];
关键字 正则 替代内容 flag标记
flag:
last #本条规则匹配完成后,继续向下匹配新的location URI规则
break #本条规则匹配完成即终⽌,不再匹配后⾯的任何规则
redirect #返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
示例
域名跳转
www.ayitula.com 重写为 www.jd.com
server {
listen 80;
server_name www.ayitula.com;
location / {
rewrite ^/$ http://www.jd.com permanent ;
}
}