Nginx  rewrite(nginx url地址重写)
Rewrite 主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要Nginx的Rewrite功能,在编译Nginx之前,需要编译安装PCRE库。
通过Rewrite规则,可以实现规范的URL、根据变量来做URL转向及选择配置。 
 
if        指令
规则语法:
  1. if ($http_user_agent ~MSIE){
  2. rewrite ^(.*)$/msie/$1 break;
  3. }
  4. if (!-f$request_filename){
  5. rewrite ^/img/(.*)$/site/$host/images/$1 last;
  6. }

rewrite 语法规则:
变量名:
    变量名可以使用"="或"!="运算符
     ~  符号表示区分大小写字母匹配
     ~* 符号表示不区分大小写字母匹配
     !~ 和 !~ 与~  !~ 相反
     -f 和 !-f   用来判断文件是否存在
     -d 和 !-d   用来判断目录是否存在
     -e 和 !-e   用来判断文件或目录是否存在
     -x 和 !-x   用来判断文件是否可以执行
      也支持$1到$9位置参数

return指令
示例:,如果访问的URL以.sh .bash 结尾,返回状态码403

  1. location ~ .*\.(sh|bash)?$
  2. {
  3. return 403;
  4. }

rewrite指令
  1. rewrite指令的最后一项参数为flag标记,支持的flag标记主要有以下几种:
  2. last :相当于Apache里德(L)标记,表示完成rewrite;
  3. break;本条规则匹配完成后,终止匹配,不再匹配后面的规则
  4. redirect:返回302临时重定向,浏览器地址会显示跳转后的URL地址
  5. permanent:返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
  6. last和break用来实现URL重写,浏览器地址栏URL地址不变
实例:将访问/b跳转到/bbs目录上去:

  1. location /b   {
  2. autoindex  on;
  3. alias /usr/local/nginx/html/redhat;
  4. rewrite ^/b/?$ /bbs permanent;
  5. }
  6. location /bbs {
  7. autoindex on;
  8. alias /usr/local/nginx/html/bbs;
  9. }
rewrite规则编写实例
1,将原来要访问/b的目录重写为/bbs
     核心语句:
  1. rewrite ^/b/?$ /bbs permannet;

2,根据不同的浏览器将得到不同的结果。

  1. if ($http_user_agent ~ Firefox) {
  2. rewrite ^(.*)$ /firefox/$1 break;
  3. }
  4. if ($http_user_agent ~ MSIE) {
  5. rewrite ^(.*)$ /msie/$1 break;
  6. }
  7. if ($http_user_agent ~ Chrome) {
  8. rewrite ^(.*)$ /chrome/$1 break;
  9. }
3.防止盗链:
根据Referer信息防止盗链,代码如下:

  1. location ~*\.(gif|jpg|png|swf|flv)${
  2. valid_referers none blocked www.cheng.com*.test.com;
  3. if ($invalid_referer)
  4. rewrite ^/(.*) http://www.cheng.com/error.html
  5. }
4.实现域名跳转:

  1. server {
  2. listen       80;
  3. server_name  cheng.example.com;
  4. write ^(.*)$  http://zhang.example.com/$1 permanent;
  5. location / {
  6. root   html;
  7. index  index.html index.htm;
  8. }

http://blog.csdn.net/xifeijian/article/details/20955253

Nginx Rewrite规则初探(转)的更多相关文章

  1. Nginx Rewrite规则记录

    Rewrite 是一种服务器的重写脉冲技术,它可以使得服务器可以支持 URL 重写,是一种最新流行的服务器技术.它还可以实现限制特定IP访问网站的功能.很多情况下,某个 IP 的访问很容易造成 CPU ...

  2. Nginx rewrite 规则 与 proxy_pass 实现

    Nginx rewrite 规则  与 proxy_pass 实现     -------------------------------------------------------------- ...

  3. Nginx Rewrite规则详解

    Rewrite规则含义就是某个URL重写成特定的URL,从某种意义上说为了美观或者对搜索引擎友好,提高收录量及排名等. Rewrite规则的最后一项参数为flag标记,支持的flag标记主要有以下几种 ...

  4. Nginx系列二:(Nginx Rewrite 规则、Nginx 防盗链、Nginx 动静分离、Nginx+keepalived 实现高可用)

    一.Nginx Rewrite 规则 1. Nginx rewrite规则 Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好, ...

  5. [转】 nginx rewrite规则

    http://www.cnblogs.com/cgli/archive/2011/05/16/2047920.html 最近在VPS上尝试配置安装一个网站,VPS安装了LNMP(Linux+Nginx ...

  6. [转帖]Nginx rewrite 规则 与 proxy_pass 实现

    Nginx rewrite 规则 与 proxy_pass 实现 https://www.cnblogs.com/jicki/p/5546916.html Nginx rewrite 规则  与 pr ...

  7. Nginx Rewrite规则

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

  8. codeigniter nginx rewrite规则配置【转】

    转自:http://www.nginx.cn/1134.html nginx如何配置才能支持codeigniter ? 1. codeigniter的url美化去掉index.php   1 2 3 ...

  9. 【Web】Nginx Rewrite规则

    Rewrite介绍 Rewrite主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要Nginx的Rewrite功能,在编译Ngi ...

随机推荐

  1. S3C6410 GPIO操作接口

    在后面的驱动学习中,需要对GPIO进行一系列的操作,了解这些引脚操作有助于编码的效率. 一.配置GPIO S3C6410要使用其引脚时,需要对其进行配置,如配置为输入/输出/中断等功能,根据芯片手册来 ...

  2. 我的一个关于RFID的项目总结

    去年做的一个项目,今天在这里想总结一下,这是主要流程: [0]RFID(Reader)---->[1]网络---->[2]接收处理程序---->[3]队列---->[4]读/存 ...

  3. elasticsearch-5.0.0初见

    基础概念 Elasticsearch有几个核心概念.从一开始理解这些概念会对整个学习过程有莫大的帮助. 接近实时(NRT) Elasticsearch是一个接近实时的搜索平台.这意味着,从索引一个文档 ...

  4. 图标字体IcoMoon 使用

    IcoMoon 使用官方地址 http://icomoon.io/实际上,它是一种字体,只不过这种字体的字象图标一样,比如windows中自带的MT Extra Webdings Wingdings字 ...

  5. 清除缓存、开启IO统计

    SQL性能优化前期准备-清除缓存.开启IO统计 如果需要进行SQl Server下的SQL性能优化,需要准备以下内容: 一.SQL查询分析器设置: 1.开启实际执行计划跟踪. 2.每次执行需优化SQL ...

  6. css3: css3选择器

    --------------------css3选择器-------------------------css3属性选择器  ~~属性选择器基本上ie7+都支持,可以相对放心的使用 见: www.ca ...

  7. poj 2001 Shortest Prefixes(字典树)

    题目链接:http://poj.org/problem?id=2001 思路分析: 在Trie结点中添加数据域childNum,表示以该字符串为前缀的字符数目: 在创建结点时,路径上的所有除叶子节点以 ...

  8. 工程中.pch文件的作用 及使用方法

    #ifdef __OBJC__ #define ABC 10#import "UIImage+Image.h"// 配置pch: buildSetting -> prefix ...

  9. 程序中的Cookie 和Session

    这几天回家休息后,想想放假之前的几天,主要看的一些工作上的东西,发现对Session和Cookie这两个东西,我还是很陌生.恩,趁着有网,看了点相关的资料,打算整理下.一翻博客,发现已经有前辈已经对这 ...

  10. Ext JS学习第十七天 事件机制event(二)

    此文仅有继续学习笔记: 昨天说了三种邦定事件的方法,今天说一下自定义事件 假设现在又这样的情景一个自定义的事件 没有用到事件处理的场景        母亲问孩子和不饿->             ...