分享免费的编程资源和教程

网站首页 > 技术教程 正文

nginx rewrite规则详解

goqiw 2025-05-15 17:51:13 技术教程 1 ℃ 0 评论

目录

  • 概述
  • 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

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

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表