URL重写 Rewrite匹配 示例

示例1:
目的:
目录的表达方式发生变化。原先的“-”分割,变成了“/"目录层次。

http://www.qianfeng.com/qf/11-22-33/1.html
转换为
http://www.qianfeng.com/qf/11/22/33/1.html
1.注释掉上一个实验中的重定向部分。
2.准备目标目录
mkdir /usr/share/nginx/html/qf/11/22/33/ -p
准备目标页面
echo ‘/usr/share/nginx/html/qf/11/22/33/1.html’ > /usr/share/nginx/html/qf/11/22/33/1.html
3.配置地址重写

 location /qf {
            rewrite ^/qf/([0-9]+)-([0-9]+)-([0-9]+)(.*)$ /qf/$1/$2/$3$4 permanent;
            root /usr/share/nginx/html;
           }

4.访问页面进行测试
http://qianfeng.com/qf/11-22-33/1.html
在这里插入图片描述示例2:

目的:
	引用原URL当中的信息,重定向至目标的URL
	#http://cyx.qianfeng.com ==> http://www.qianfeng.com/cyx
#http://cheng.qianfeng.com ==> http://www.qianfeng.com/cheng
	if ($host ~* "^www.qianfeng.com$" ) {
      break;
  }

if ($host ~* "^(.*)\.qianfeng\.com$" ) {
      set $user $1;
      rewrite .* http://www.qianfeng.com/$user permanent;
  }
		这里break是为了跳出循环。
如不加break。
每一次重写后,主机名都符合if的判断结果,会再次被重写。
		set 指令是用于定义一个变量,并且赋值。应用于server,location,if环境。

1.注释掉上一个实验中的重定向部分。
2.配置地址重写

准备目标页面
	mkdir /usr/share/nginx/html/{cyx,cheng}
	echo "cyx" > /usr/share/nginx/html/cyx/index.html
	echo "cheng" > /usr/share/nginx/html/cheng/index.html
准备客户端DNS记录
192.168.152.157	cyx.qianfeng.com  cheng.qianfeng.com  www.qianfeng.com
if ($host ~* "^www.qianfeng.com$" ) {
      break;
  }

if ($host ~* "^(.*)\.qianfeng\.com$" ) {
      set $user $1;
      rewrite .* http://www.qianfeng.com/$user permanent;
  }
  这里break是为了跳出循环。
如不加break。
每一次重写后,主机名都符合if的判断结果,会再次被重写。

3.访问页面进行测试
cyx.qianfeng.com
在这里插入图片描述cheng.qianfeng.com
在这里插入图片描述示例3:
目的:
如果访问服务器中的特殊文件。如:.sh结尾的文件。则返回403操作拒绝错误
重写

location ~* \.sh$ {
	return 403;
	#return 301 http://www.qianfeng.com;
}

示例4:
目的:last标记
1.准备三个页面

	mkdir /usr/share/nginx/html/test 
	echo 'break' > /usr/share/nginx/html/test/break.html
	echo 'last' > /usr/share/nginx/html/test/last.html
	echo 'test' > /usr/share/nginx/html/test/test.html
2.邀请break,last标记
vim /etc/nginx/conf.d/default.conf 
server {
        listen 80;
        location / {
        root /usr/share/nginx/html;
        index index.html index.php;
        }
location /break {
        rewrite .* /test/break.html break;
        root /usr/share/nginx/html;
}
location /last {
        rewrite .* /test/last.html last;
        root /usr/share/nginx/html;
}
location /test {
        rewrite .* /test/test.html break;
        root /usr/share/nginx/html;
}

3.验证,理解last
http://192.168.152.157/break
在这里插入图片描述http://192.168.152.157/last

在这里插入图片描述http://192.168.152.157/test
在这里插入图片描述

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页