实现页面跳转的方式

实现页面跳转的方式,第1张

nginx里的rewrite跳转的实现

本文主要介绍了nginx中重写跳转的实现,通过示例代码进行了详细的介绍,对大家的学习或工作有一定的参考价值。有需要的朋友下面和边肖一起学习。

一、新旧域名跳转

动作场景:基于域名跳转,现公司旧域名:www.peihua.com

有业务需要变更,需要用新域名www.zhenguo.com代替,但是旧域名不能废。您需要跳转到新的域名,以下参数保持不变

配置dns,分别配置www.peihua.com(旧)和www.zhenguo.com(新)进行解析。

rpm-ivhhttp://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

(必须有官方源码才能安装yum出品的nginx)

yuminstallnginx-y rpm-qcnginx//查找配置文件

修改nginx的配置文件

[root@localhost~]#vim/etc/nginx/conf.d/default.conf server{ listen80; server_namewww.peihua.com;#域名修改 #charsetkoi8-r; access_log/var/log/nginx/peihua.com-access.logmain;#日志修改 location/{ #域名重定向 if($host='www.peihua.com'){ rewrite^/(.*)$http://www.zhenguo.com/$1permanent; } root/usr/share/nginx/html; indexindex.htmlindex.htm; } [root@localhostnamed]#systemctlrestartnginx

配置域名解析

yum-yinstallbind #修改主配置文件 [root@localhostconf.d]#vim/etc/named.conf options{ listen-onport53{any;};//修改成any listen-on-v6port53{::1;}; directory"/var/named"; dump-file"/var/named/data/cache_dump.db"; statistics-file"/var/named/data/named_stats.txt"; memstatistics-file"/var/named/data/named_mem_stats.txt"; recursing-file"/var/named/data/named.recursing"; secroots-file"/var/named/data/named.secroots"; allow-query{any;};//修改成any #修改区域配置文件 [root@localhostconf.d]#vim/etc/named.rfc1912.zones zone"peihua.com"IN{ typemaster; file"peihua.com.zone"; allow-update{none;}; }; zone"zhenguo.com"IN{ typemaster; file"zhenguo.com.zone"; allow-update{none;}; }; #修改区域数据文件 [root@localhostconf.d]#cd/var/named/ [root@localhostnamed]#cp-pnamed.localhostpeihua.com.zone [root@localhostnamed]#cp-ppeihua.com.zonezhenguo.com.zone [root@localhostnamed]#systemctlstartnamed

浏览器测试

进入浏览器模拟访问http://www.peihua.com/test/1/index.php(虽然这个请求的内容并不存在),跳转到
http://www.zhneguo.com/test/1/index.php,,你可以从标题中看到。

二。基于IP的接入跳跃

动作场景:基于客户端IP访问跳转。比如今天公司业务版上线,所有IP访问都显示固定维护页面。只有公司IP:12.0.0.100访问正常。

修改nginx配置文件

[root@localhosthtml]#vim/etc/nginx/conf.d/default.conf server{ listen80; server_namewww.peihua.com; #charsetkoi8-r; charset'utf-8';//识别中文字符 access_log/var/log/nginx/peihua.com-access.logmain; #设置是否合法的IP标志 set$rewriteture; #判断是否为合法IP if($remote_addr="12.0.0.100"){ set$rewritefalse; } #非法IP进行判断打上标记 if($rewrite=ture){ rewrite(.+)/maintenance.html; } #匹配标记进行跳转站点 location=/maintenance.html{ root/usr/share/nginx/html; }

将自定义页面内容添加到maintenance.html

[root@localhosthtml]#cat/usr/share/nginx/html/maintenance.html <h1>网站正在维护</h1>

浏览器测试

使用12.0.0.100的ip地址访问http://www.peihua.com,可以正常访问
使用12.0.0.99的IP地址访问http://www.peihua.com,显示维护页面。

三。根据旧域名跳转到新域名,并在它后面添加目录

动作场景:基于旧域名,跳转到新域名,添加一个目录。例如,现在你正在访问http://bbs.peihua.com。
现在您需要将该域名下的所有帖子跳转到http://www.peihua.com/bbs,.,请保持域名跳转后的参数不变。

修改nginx配置文件

[root@localhostnamed]#vim/etc/nginx/conf.d/default.conf listen80; server_namebbs.peihua.com; #charsetkoi8-r; charset'utf-8'; access_log/var/log/nginx/peihua.com-access.logmain; location/post{ rewrite(.+)http://www.peihua.com/bbs$1permanent; }

注:accp.com.zone需要更改主机域名解析,将www改为bbs

[root@localhostnamed]#cd/var/named [root@localhostnamed]#vimpeihua.com.zone $TTL1D @INSOA@rname.invalid.( 0;serial 1D;refresh 1H;retry 1W;expire 3H);minimum NS@ A127.0.0.1 bbsINA12.0.0.25 [root@localhostnamed]#systemctlrestartnamed [root@localhostnamed]#systemctlrestartnginx

浏览器访问

浏览器访问http://bbs.peihua.com/post/a.html,被称为www.peihua.com/bbs/post/a.txt.

四。基于参数匹配的跳转

动作场景:基于参数匹配跳转比如现在访问http://www.peihua.com/100-(100|200)-100.html
跳转到http://www.peihua.com页面。

修改nginx配置文件

[root@localhostnamed]#vim/etc/nginx/conf.d/default.conf server{ listen80; server_namewww.peihua.com; #charsetkoi8-r; charset'utf-8'; access_log/var/log/nginx/peihua.com-access.logmain; if($request_uri~^/100-(100|200)-(\d+).html$){ rewrite(.*)http://www.peihua.compermanent; }

注意:\d匹配0到9之间的数字

会修改dns,把bbs改成www

[root@localhostnamed]#vimpeihua.com.zone $TTL1D @INSOA@rname.invalid.( 0;serial 1D;refresh 1H;retry 1W;expire 3H);minimum NS@ A127.0.0.1 wwwINA12.0.0.25 [root@localhostnamed]#systemctlrestartnamed [root@localhostnamed]#systemctlrestartnginx

浏览器测试

浏览器访问http://www.peihua.com/100-200-26.html,被称为www.peihua.com主页。

V.基于所有以php结尾并且基于某个页面的跳转

修改nginx配置文件

[root@localhostnamed]#vim/etc/nginx/conf.d/default.conf server{ listen80; server_namewww.peihua.com; #charsetkoi8-r; charset'utf-8'; access_log/var/log/nginx/peihua.com-access.logmain; location~*/upload/.*\.php${ rewrite(.+)http://www.peihua.compermanent; } [root@localhostnamed]#systemctlrestartnginx

浏览器访问

通过浏览器访问http://www.peihua.com/upload/a.php,被称为www.peihua.com。

六。基于特定页面跳转/abc/123.html

修改nginx配置文件

[root@localhostnamed]#vim/etc/nginx/conf.d/default.conf server{ listen80; server_namewww.peihua.com; #charsetkoi8-r; charset'utf-8'; access_log/var/log/nginx/peihua.com-access.logmain; location~*^/abc/123.html{ rewrite(.+)http://www.peihua.compermanent; } [root@localhostnamed]#systemctlrestartnginx

浏览器访问

访问http://www.peihua.com/abc/123.html,的浏览器叫www.peihua.com

关于nginx中重写跳转的实现的这篇文章到此为止。有关nginx重写跳转的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/774205.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存