rewrite规则_基于nginx的中间件架构

nginx rewrite规则详解

目录

  • 概述
  • rewrite语法规则
  • rewrite配置实例解析
  • php7进阶到架构师相关阅读

概述

这是关于php进阶到架构之Nginx进阶学习的第篇文章:nginx rewrite规则详解

nginx的rewrite功能和apache一样,rewrite的主要功能是实现RUL地址的重定向。

Nginx的rewrite模块即ngx_http_rewrite_module模块。

rewrite机制从某种意义上可以说为了美观或者搜索引起的友好搜索,提高排名等

rewrite语法规则

语法:

rewrite	regex  replacement	[flag]

rewrite:rewrite重写的关键字不可省略

regex:这里写的是正则表达式

replacement:这里是替换内容

flag:这里是flag标记

flag标记说明:



相关符号说明:



文件目录匹配:



rewrite配置实例解析

实例1 :多域名跳转到同一域名

	server{
		listen ;
		server_name www.toutiao.com toutiao.com ;
		if($host != &#;www.jkyst.xyz&#; ){
			rewrite ^/(.*)$ http://www.toutiao.com/$1 permanent;
		}
		location ~.*\.(png|gif|jpg){
			return ;
		}
	}

该重写实例含义:

1.浏览器在地址栏访问toutiao.com相当于http://www.toutiao.com/,

2.permanent参数:表示浏览器地址栏地址由toutiao.com转为http://www.toutiao.com/

实例2 :当文件不存在时重定向到指定文件-permanent

	server{
		listen ;
		server_name www.gofor.com;
		if(!-e $request_filename){
			rewrite  ^/test/(.*)$ http://www.gofor.com/test1/$1 permanent;
		}
	}

当访问 &#;test&#; 目录下的文件或目录不存在时,

则跳转到 &#;test1&#;下面的此文件或者目录,

跳转后会将URL进行转换(浏览器地址栏地址变更)


实例3 :当文件不存在时重定向到指定文件-last

	server{
		listen ;
		server_name www.gofor.com;
		if(!-e $request_filename){
			rewrite ^/test/(.*)$ index.html last;
		}
	}

表示当访问 &#;test&#; 目录下的文件或目录不存在时,则重定向到 &#;index.html&#;文件,

跳转后URl不会进行转换(浏览器地址栏地址不变)

实例4 :当文件不存在时重定向到指定文件

	server{
			listen ;
			server_name www.gofor.com;
			if(!-e $request_filename){
				rewrite ^/test/([0-9a-z]+)/([0-9a-z]+)/(.*)$ http://www.gofor.com/test/$1$2$3 permanent;
			}
	}

目录切换,表示将原目录转换成其他目录,【0-9a-z】表示转换后目录名称

实例5 匹配用户浏览器代理信息

	server{
		listen ;
		server_name www.gofor.com;
		if ( $http_user_agent ~* (&#;Android&#;)|(iPhone)){
			rewrite ^/test/(.*)$ http://www.gofor.com/test/$1  permanent;
		}
	}

表示当匹配到浏览代理为Android和iPhone时进行重定向 &#;test&#;目录下的文件,改变访问的地址

php7进阶到架构师相关阅读

https://www.kancloud.cn/gofor/gofor

最后,欢迎大家留言补充,讨论~~~

原文链接:,转发请注明来源!