Nginx网站---地址重写

可以定义用户的访问路径可以看到的实际内容

格式:rewrite   匹配路径   实际看到的页面   选项

rewrite 支持正则表达式

地址重写测试1:相同网站不同页面

cp conf/nginx.conf.default conf/nginx.conf //可以先还原配置文件

cp:是否覆盖"conf/nginx.conf"? y

打开配置文件,在38行添加(在默认虚拟主机里面写)

rewrite  /a.html  /b.html;     //用户访问的路径中包含a.html的话就跳转到b.html页面

然后准备测试页面

echo "nginx-a~~" > html/a.html

echo "nginx-b~~" > html/b.html

[root@proxy nginx]# sbin/nginx -s reload   //重新加载nginx主配置文件

使用浏览器访问192.168.99.5/a.html看到的是b.html的内容

地址重写测试2:相同网站不同页面

rewrite  ^/a\.html$ /b.html redirect; //在刚刚的配置中添加redirect

sbin/nginx -s reload    //重新加载nginx主配置文件

使用http://192.168.99.5/a.html路径访问网站时,地址栏同时发生变化

地址重写测试3:不同网站间跳转

rewrite  /   http://www.tmooc.cn;             //访问192.168.99.5的网站可以跳转到www.tmooc.cn

sbin/nginx -s reload     //重新加载nginx主配置文件

 

地址重写测试4:不同网站间跳转

rewrite   /(.*)   http://www.tmooc.cn/$1; //访问老网站会跳到新网站,同时会携带所访问的页面,()是正则,代表保留(复制) $1表示粘贴之前第一个小括号保留的内容

sbin/nginx -s reload      //重新加载nginx主配置文件

 

地址重写测试5:不同浏览器跳转到不同页面

mkdir html/firefox

echo firefox~~ > html/firefox/abc.html

echo others~~ > html/abc.html

火狐专用页面 火狐访问192.168.99.5/abc.html时可以看到html/firefox/abc.html里面内容

其他专用页面 其他访问192.168.99.5/abc.html 时可以看到html/abc.html里面内容

修改配置文件,删除原有地址重写,原地添加

if ($http_user_agent ~* firefox){      //如果用户使用了火狐浏览器

rewrite /(.*) /firefox/$1;     //就进行地址重写操作,让用户看到火狐专属页面

}

$http_user_agent是nginx的内置变量,存储了用户的信息,比如用的什么浏览器~匹配正则 *忽略大小写

改完后sbin/nginx -s reload       //重新加载nginx主配置文件

使用火狐浏览器查看192.168.99.5/abc.html可以看到之前html/firefox目录下的页面,非火狐浏览器打开192.168.99.5/abc.html看到的是html下的页面

选项

redirect 临时重定向 状态码 302

permanent 永久重定向 状态码 301 

以下两种写法对于用户来说效果一样,但是对爬虫程序有区别

rewrite ^/a.html$ /b.html permanent;

rewrite ^/a.html$ /b.html redirect;

分别写完可以用 curl 192.168.99.5/a.html 看到状态码

last 不再读其他rewrite

echo "nginx-c~~" > html/c.html    //准备素材c页面

rewrite /a.html /b.html last;      //不加last的话nginx会把多个rewrite语句综合处理结果就是看a页面结果跳到c页面了,加了last的话可以避免这个情况

rewrite   /b.html   /c.html ;

break 不再读其他语句

location    /    {              //此处为默认的location

rewrite   /a.html   /b.html break;    //将last改为break可以阻止后面的语句,此处如果是last则无法阻止后面location语句中的rewrite语句

root html;

index index.html index.htm;

}

location /b.html {     //这里是新添加的location

rewrite /b.html /c.html;

}

结果就是看a页面结果跳到c页面了,加了break的话可以避免这个情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白--AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值