1 简介

  rewrite模块即ngx_http_rewrite_module模块,主要功能是改写请求URI,是Nginx默认安装的模块。rewrite模块会根据PCRE正则匹配重写URI,然后发起内部跳转再匹配location,或者直接做30x重定向返回客户端。rewrite其实就是做了uri的映射

2 rewrite语法格式及参数语法

  rewrite是实现URL重写的关键指令,根据regex (正则表达式)部分内容, 重定向到replacement,结尾是flag标记。

  rewrite    <regex>    <replacement>    [flag];

    关键字      正则        替代内容          flag标记

    关键字:其中关键字error_log不能改变

    正则:perl兼容正则表达式语句进行规则匹配

    替代内容:将正则匹配的内容替换成replacement

    flag标记:rewrite支持的flag标记

flag标记说明:

last  #本条规则匹配完成后,继续向下匹配新的location URI规则

break  #本条规则匹配完成即终止,不再匹配后面的任何规则

redirect  #返回302临时重定向,浏览器地址会显示跳转后的URL地址

permanent  #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

3 rewrite参数的标签段位置

  可以在下面这些地方使用

server,location,if

4 写法

rewrite ^/[0-9]+$ /teacher.shtml?testParam=$1 break;  #地址重写

  rewrite为固定关键字,表示开始进行rewrite匹配规则 

  ^/[0-9]+$是正则表达式,匹配路径

  替代部分是/index.html?testParam=$1,$1是对应前面第一个匹配参数,也就是取自^/[0-9]+。匹配成功后跳转到的URL。

  flag部分break表示本条规则匹配完成即终止,不再匹配后面的任何规则

  此时如访问:192.168.28.110/123  实际会访问http://www.atguigu.com/teacher.shtml?testParam=123

5 示例

5.1 配置

  现有一个nginx:192.168.28.110:80

  nginx配置如下:

rewrite ^/[0-9]+$ /teacher.shtml?testParam=$1 break;  #地址重写
worker_processes  1;

events {
worker_connections 1024;
} http {
include mime.types;
default_type application/octet-stream; sendfile on; keepalive_timeout 65; server {
listen 80;
server_name nginx1.com; location / {
proxy_pass http://www.atguigu.com/; #方向代理
rewrite ^/[0-9]+$ /teacher.shtml?testParam=$1 break; #地址重写
#root /usr/local/mynginx/nginx1;
#index index.html index.htm;
} error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
 

5.2 访问

1)直接访问

http://www.atguigu.com/teacher.shtml

2)访问nginx

http://192.168.28.110/123

  在访问上面地址时,

  取192.168.28.110后面的uri去和rewrite的表达式匹配

  ^/[0-9]+$表示任意数量的数字,123匹配上了
  那么就会使用/teacher.shtml?testParam=$1替代123
  $1就是取第一个匹配的值,也就是123,也就是/teacher.shtml?testParam=123
  完整的就是http://192.168.28.110/teacher.shtml?testParam=123
  由于配置了方向代理,所以实际访问的就是http://www.atguigu.com/teacher.shtml?testParam=123

  

Nginx06 Rewrite的更多相关文章

  1. wamp集成环境开启rewrite伪静态支持

    wamp集成环境在安装完后,默认是没有开启伪静态的,所以有时把项目部署进去时如果源码里包含.htaccess文件的话,可能会出现500错误,这一般是因为不支持伪静态造成的,解决这个问题的办法就是开启伪 ...

  2. 页面解耦—— 统跳协议和Rewrite引擎

    原文: http://pingguohe.net/2015/11/24/Navigator-and-Rewrite.html 解耦神器 —— 统跳协议和Rewrite引擎 Nov 24, 2015 • ...

  3. 搜索引擎Query Rewrite

    中心词抽取项目总结 B2B国际站Query重写.ppt 达观数据搜索引擎的Query自动纠错技术和架构详解 Natural Language Processing Simrank++ Query re ...

  4. 关于ThinkPHP在BAE上URL的rewrite问题

    在BAE上若想用ThinkPHP的那一套URL路由方式,必须在BAE上rewrite一下,之前我就直接用了不过是403错误,rewrite方式如下: 把你在BAE上的文件checkout到本地,在根目 ...

  5. Nginx Rewrite规则

    location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # 因为所有的地址都以 / 开头,所以这条规则将匹配 ...

  6. Nginx下wordpress伪静态规则(rewrite)

    当我们从apache服务器转向Nginx服务器的时候,它们的伪静态规则就不一样了,所以你熟悉Nginx服务器的伪静态规则,自己写当然也好.但很多网友还是不太了解Nginx服务器的伪静态规则的,而如果你 ...

  7. Apache rewrite

    Apache rewrite mod_rewrite简介和配置 实URL跳转隐藏真实地址 拟目录 域名跳转 防止盗链 Apache配置支持httpd.conf配置.htaccess配置 启用rewri ...

  8. apache配置rewrite及.htaccess文件(转载)

    今天看到一个哥们的帖子发了个rewrite的帖子,以前也写过一个,配置挺简单的,但当时没注意这个问题,当时没有用到.htaccess文件,在机子上测试了一下,发现确实没法用,于是开始找问题的所在. 自 ...

  9. rewrite规则中参数多于9个的处理方式 apache nginx

    RewriteRule ^index-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)(.*)$ $9&a ...

  10. windows apache开启url rewrite

    加载Rewrite模块: 在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”, ...

随机推荐

  1. npm安装hexo报错

    报错提示 npm WARN saveError ENOENT: no such file or directory, open '/home/linux1/package.json' npm noti ...

  2. python选课系统项目详解

    选课系统项目详解 选课系统简介及分析 选课系统架构设计分析 选课系统目录设计 管理员视图 注册 登录 创建学校 创建课程 创建讲师 学生视图 注册 登录 选择学校 选择课程 查看分数 教师视图 登录 ...

  3. BFS和DFS学习笔记

    1 算法介绍 1.1 BFS Breadth First Search(广度优先搜索),将相邻的节点一层层查找,找到最多的 以上图为例,首先确定一个根节点,然后依次在剩下的节点中找已找出的节点的相邻节 ...

  4. 生成requirements.txt

    requirements.txt文件 requirements.txt 文件是项目的依赖包及其对应版本号的信息列表,即记载你这个项目所安装的依赖. 作用:用来重新构建项目或者记录项目所需要的运行环境依 ...

  5. hexo-通过-metaweblog-api-同步各大博客网站

    闲聊 不多逼逼了.上干货 如何写一篇文章同步到多个博客网站 最近通过hexo 建立了博客网站,发现流量少的可怜,那把文章发到各个博客网站呢,我又懒那通过一番研究 终于搞定了通过MetaWebLog A ...

  6. 4.7:Hive操作实验

    〇.概述 1.拓扑结构 2.目标 通过Hive实验熟悉Hive的基本操作 一.操作流程 1.启动环境 2.启动hive 输入 cd /home/user/bigdata/apache-hive-2.3 ...

  7. vulnhub靶场渗透实战12-driftingblues2

    ​vbox导入,网络桥接. 靶机下载地址:https://download.vulnhub.com/driftingblues/driftingblues2.ova 一:信息收集 1:主机发现. 2: ...

  8. 1.5.6 NN与2NN-hadoop-最全最完整的保姆级的java大数据学习资料

    目录 1.5.6 NN与2NN 1.5.6.1 HDFS元数据管理机制 1.5.6.2 Fsimage与Edits文件解析 1.5.6.2.1 Fsimage文件内容 1.5.6.2.2 Edits文 ...

  9. 安装node.js与webpack创建vue2项目

    本文为博主原创,转载请注明出处: 1.安装node.js 下载地址:http://nodejs.cn/download/ (可查看历史版本) node.js 中文网:http://nodejs.cn/ ...

  10. 【博学谷学习记录】超强总结,用心分享|前端CSS总结(一)

    CSS总结(一) shift+alt,选中多行 外链式 <link rel="stylesheet" href="./my.css"> 1 选择器 ...