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 80;
		server_name www.toutiao.com toutiao.com ;
		if($host != 'www.jkyst.xyz' ){
			rewrite ^/(.*)$ http://www.toutiao.com/$1 permanent;
		}
		location ~.*\.(png|gif|jpg){
			return 403;
		}
	}

该重写实例含义:

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

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

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

	server{
		listen 80;
		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 80;
		server_name www.gofor.com;
		if(!-e $request_filename){
			rewrite ^/test/(.*)$ index.html last;
		}
	}

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

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

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

	server{
			listen 80;
			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 80;
		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

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

相关文章

部署Nginx-一个ip,多个域名,部署多个项目

一、背景无论是在centos、ubuntu、iis等云服务器,还是在个人的电脑上,当部署Nginx时,基本上都会遇到想用一台服务器(只有一个IP)映射到多个域名上,以供访问多个不同的前端项目的情况(这...

在 Nginx 中防止 SSL 证书被其他域名“窜用”

在 Nginx 中防止 SSL 证书被其他域名“窜用”(即防止未经授权的域名使用你的 SSL 证书),需要确保你的服务器配置只允许合法域名访问,并通过适当的配置阻止非法域名的 HTTPS 请求。一般情...

搭建nginx反向代理用作内网域名转发

情景由于公司内网有多台服务器的http服务要映射到公司外网静态IP,如果用路由的端口映射来做,就只能一台内网服务器的80端口映射到外网80端口,其他服务器的80端口只能映射到外网的非80端口。非80端...

要将端口5002和5003通过Nginx代理到一个域名上的操作笔记

要将端口5002和5003通过Nginx代理到域名www.4rvi.cn的不同路径下,请按照以下步骤配置Nginx:步骤说明创建或编辑Nginx配置文件通常配置文件位于/etc/nginx/sites...

Nginx域名配置

对于想搭建自己博客或者其他个人网站的小伙伴,可能会需要配置域名。在我们购买完服务器,代码敲完,项目搞定,怎么使用域名访问呢?首先购买域名(要有DNS解析)-> 然后域名备案与审核 -> 最...

使用nginx配置动态域名解析

使用nginx配置来达到动态域名解析,resolver指令设置解析器的地址using-nginx-map-directive-to-dynamically-set-proxy-upstream要使用...