16、Nginx-重写与重定向

作者 : 开心源码 本文共1294个字,预计阅读时间需要4分钟 发布时间: 2022-05-11 共66人阅读

为了可以够在修改网站结构或者域名后,避免造成网站中的链接或者在其余网站中的外链失效,已经提高网站在搜索引擎的收录量和排名等目的,通常会采使用url重写与重定向,在加强网站专业化的同时,为使用户提供更加舒适的用体验。

1、rewrite板块的详情

重写与重定向功可以是现在大多数Web服务器都支持的一项功可以,相对于其余产品而言,Nginx中的rewrite板块提供的功可以在配置上更加灵活自由,可定制性非常高,它的实现方式简单,只要要通过rewrite指令根据Nginx提供的全局变量或者自己设置的变量,结合正则表达式已经进一步解决的标识即可以完成url重写或者重定向。

2、rewrite实现重写

rewrite指令基本语法:

rewrite regex replacement [flag];

flag可选参数值:

  • last:终止rewrite,继续匹配其余规则;

  • break:终止rewrite,不再继续匹配;

  • redirect:临时重定向,返回的HTTP状态码为302;

  • permanent:永久重定向,返回的HTTP状态码为301;

当flag值为last或者break时,表示当前的设置为重写,当flag的值为redirect或者permanent时表示重定向;

2.1、增加rewrite指令

16、Nginx-重写与重定向

if与括号有空格,!-e与$request_filename有空格;

!-e使用于判断不存在指定的文件或者目录时,执行if块内的语句,内置变量$request_filename表示当前请求的文件路径;

^/.*使用于匹配当前网站下的所有请求;

/default/default.html使用于替换符合指定规则的请求;

if指令判断符号:

  • =:判断变量与内容相同;

  • !=:判断变量与内容不等;

  • ~:区分大小写正则匹配;

  • ~*:不区分大小写正则匹配;

  • !~:区分大小写正则不匹配;

  • !~*:不区分大小写正则不匹配;

  • -f:判断文件存在;

  • !-f:判断文件不存在;

  • -d:判断目录存在;

  • !-d:判断目录不存在;

  • -e:判断文件或者目录存在;

  • !-e:判断文件或者目录不存在;

  • -x:判断可执行文件;

  • !-x:判断不可执行文件;

测实验证:

在网站根目录下创立default目录,并在改目录下编写default.html文件:

16、Nginx-重写与重定向

重启访问一个不存在的文件

16、Nginx-重写与重定向

2.2、break和last标识的区别

在用rewrite实现重写时,需要注意flag可选参数值break和last的区别,前者在rewrite指令匹配成功后就不再进行匹配,而 后者在rewrite后会根据rewrite匹配的规则重新发起一个请求继续进行匹配。

设置匹配规则:

16、Nginx-重写与重定向

重启访问

16、Nginx-重写与重定向

16、Nginx-重写与重定向

16、Nginx-重写与重定向

3、rewrite实现重定向

rewrite的重定向就是将使用户访问的url修改为重定向的地址,只要将flag的可选参数值设置为redirect或者permanent就可实现。

16、Nginx-重写与重定向

利使用set指令为变量$name赋值,$1表示符合正则表达式第一个字模式的值,子模式([0-9]+)匹配到的值;

使用户请求http://test.ng.test/img-数字.jpg时,重定向到http://test.ng.test/img/数字.jpg;

16、Nginx-重写与重定向

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 16、Nginx-重写与重定向

发表回复