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. Webform之FileUpload(上传按钮控件)简单介绍及下载、上传文件时图片预览

    1.FileUpload上传控件:(原文:http://www.cnblogs.com/hide0511/archive/2006/09/24/513201.html) FileUpload 控件显示 ...

  2. ExtJs007最常用的查询方法

    Ext.onReady(function () { Ext.create('Ext.panel.Panel', { title: '我的面板', width: '100%', height: 400, ...

  3. [Jobdu] 题目1283:第一个只出现一次的字符

    题目描述: 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符. 输入: 输入有多组数据每一组输入一个字符串. 输出: 输出第一个只出现一次的字 ...

  4. Determine If Two Rectangles Overlap

    判断相交的情况比较复杂,所以从判断不相交的角度考虑. ! (P1.y < P4.y || P1.x > P4.x || P2.y > P3.y || P2.x < P3.x)

  5. C++对象模型--总结

    http://c.biancheng.net/cpp/biancheng/view/239.html 博客园有关C++内存布局,对象模型的文章. Effective C++ 绝不重写non-virtu ...

  6. Lucence.Net+添加关键词+分页+排序

    1.使用queryparser完成解析搜索请求 2.基本格式如: QueryParser parser=new QueryParser("字段名称","分析器实例&quo ...

  7. mac上搭建svn服务器

    1.terminal 执行svnadmin create 库地址/库名,生成的即为svn库根地址. 2.修改对应目录下conf/svnserve.conf文件: anon-access = read ...

  8. [LeetCode]题解(python):080-Remove Duplicates from Sorted Array II

    题目来源: https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/ 题意分析: 跟定一个排好序的数组.修改这个数组使 ...

  9. inline-block 垂直居中

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 转: Nodejs概述

    目录 简介 安装与更新 版本管理工具nvm 基本用法 REPL环境 异步操作 全局对象和全局变量 模块化结构 概述 核心模块 自定义模块 fs模块 Stream模式 http模块 实例:搭建一个HTT ...