概述
地址重写
可以定义用户的访问路径可以看到的实际内容
修改配置文件:为那个虚拟主机定义地址重写就在哪个虚拟主机的{}里面(改完之后需要重启)
rewrite 匹配路径 实际看到的页面 选项
rewrite /a.html /b.html /用户访问的路径中包含a.html的话就跳转到b.html
rewrite ^/a.html$ /b.html ; //访问路径必须是a.html
rewrite ^/a.html$ /b.html redirect; //redirect(重定向)的作用是显示对应的路径(跳到那显示哪)
rewrite / http://www.baidu.com; //访问本机IP的网站可以跳转到百度
rewrite /(.*) http://www.tmooc.cn/$1; //访问老网站会跳到新网站,同时会携带所访问的页面,()是正则,代表保留(复制) $1表示,粘贴之前第一个小括号保留的内容
不同浏览器跳转到不同页面
mkdir html/firefox
echo firefox~~ > html/firefox/abc.html
echo others~~ > html/abc.html
火狐专用页面 火狐访问192.168.2.5/abc.html时可以看到html/firefox/abc.html里面内容
其他专用页面 其他访问192.168.2.5/abc.html 时可以看到html/abc.html里面内容
修改配置文件,删除原有地址重写,原地添加
if ($http_user_agent ~* firefox){ //如果用户使用了火狐浏览器
rewrite /(.*) /firefox/$1; //就进行地址重写操作,让用户看到火狐专属页面
}
//$http_user_agent是nginx的内置变量,存储了用户的信息,比如用的什么浏览器
~匹配正则 *忽略大小写
改完后sbin/nginx -s reload
使用火狐浏览器查看192.168.2.5/abc.html可以看到之前html/firefox目录下的页
面,非火狐浏览器打开192.168.2.5/abc.html看到的是html下的页面
==========================================================
选项
redirect 临时重定向 状态码 302 爬虫不感兴趣
permanent 永久重定向 状态码 301 爬虫感兴趣
以下两种写法对于用户来说效果一样,但是对百度这样的网站不同
rewrite ^/a.html$ /b.html permanent;
rewrite ^/a.html$ /b.html redirect;
分别写完可以用 curl 192.168.2.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的话可以避免这个情况
最后
以上就是怕黑高山为你收集整理的地址重写的全部内容,希望文章能够帮你解决地址重写所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复