目录:

  1. rewrite概念
  2. rewrite示例

rewrite概念

Rewirte 规则也称为规则重写,主要功能是实现浏览器访问 HTTP URL 的跳转,其正则表达式是基于 Perl 语言。通常而言,几乎所有的 WEB 服务器均可以支持 URL 重写。

Rewrite URL 规则重写的用途:

  • 对搜索引擎优化(Search Engine Optimization,SEO)友好,利于搜索引擎抓取网站页面。
  • 隐藏网站 URL 真实地址,浏览器显示更加美观。
  • 网站变更升级,可以基于 Rewrite 临时重定向到其他页面。

Nginx Rewrite 规则使用中有三个概念需要理解,分别是:Rewrite 结尾标识符、Rewrite 规则常用表达式、Nginx Rewrite 变量

rewrite 的优先级高于location

Nginx Rewrite 结尾标识符

用于 Rewrite 规则末尾,表示规则的执行属性。

last  :相当于 Apache 里的(L)标记,表示完成 rewrite 匹配。
break:本条规则匹配完成后,终止匹配,不再匹配后面的规则。
redirect:返回 302 临时重定向,浏览器地址会显示跳转后的 URL 地址。
permanent:返回 301 永久重定向,浏览器地址栏会显示跳转后的 URL 地址。
其中 last 和 break 用来实现 URL 重写时,浏览器地址栏 URL 地址不变。
Nginx Rewrite 规则常用表达式

主要用于匹配参数、字符串及过滤设置和正则差不多。

.    匹配任何单字符;[word]   匹配字符串:word;[^word]   不匹配字符串:word;jeff|jeff1   可选择的字符串:jeff或jeff1;? 匹配 0 到 1 个字符;*   匹配 0 到多个字符;+    匹配 1 到多个字符;^ 字符串开始标志;$    字符串结束标志;\n   转义符标志。
Nginx Rewrite 变量

常用于匹配 HTTP 请求头信息、浏览器主机名、URL 等。

HTTP_USER_AGENT  用户使用的代理,例如浏览器;HTTP_REFERER        告知服务器,从哪个页面来访问的;HTTP_COOKIE   客户端缓存,主要用于存储用户名和密码等信息; HTTP_HOST      匹配服务器 ServerName 域名;HTTP_ACCEPT  客户端的浏览器支持的 MIME 类型;REMOTE_ADDR   客户端的 IP 地址; QUERY_STRING     URL 中访问的字符串; DOCUMENT_ROOT   服务器发布目录;SERVER_PORT  服务器端口;SERVER_PROTOCOL    服务器端协议;TIME_YEAR 年;TIME_MON   月;TIME_DAY   日;

回到目录

rewrite示例

Nginx Rewrite 以下配置均配置在 nginx.conf 或者 vhosts.conf 中

  1. 将 jeff.net 跳转至 www.jeff.net。
if ($host = 'jeff.net' ) {rewrite ^/(.*)$ http://www.jeff.net/$1 permanent;
}
  1. 访问 www.jeff.net 跳转 www.test.com/new.index.html。
rewrite  ^/$ http://www.test.com/index01.html permanent;
  1. 访问/jeff/test01/跳转至/newindex.html,浏览器地址不变。
rewrite  ^/jeff/test01/$ /newindex.html last;
  1. 多域名跳转到 www.jeff.net。
if ($host != ‘www.jeff.net’ ) {rewrite ^/(.*)$ http://www.jeff.net/$1 permanent;
}
  1. 访问文件和目录不存在跳转至 index.php。
if ( !-e $request_filename ) {rewrite    ^/(.*)$ /index.php last;
}
  1. 目录对换 /xxxx/123456 ====> /xxxx?id=123456。
rewrite  ^/(.+)/(\d+) /$1?id=$2 last;
  1. 判断是IE浏览器 User Agent 跳转。
if( $http_user_agent ~ MSIE) {rewrite ^(.*)$ /ie/$1 break;
}
  1. 禁止访问以.sh,.flv,.mp3 为文件后缀名的文件。
location ~ .*\.(sh|flv|mp3)$ {return 403;
}
  1. 将移动用户访问跳转至移动端。
if ( $http_user_agent ~* "(Android)|(iPhone)|(Mobile)|(WAP)|(UCWEB)" ) {rewrite ^/$    http://m.jfedu.net/ permanent;
}
  1. 匹配 URL 访问字符串跳转。
if ($args ~* tid=13) { return 404;
}
  1. 访问/10690/jeff/123 跳转至/index.php?tid/10690/items=123,[0-9]表示任意一个数字,+表示多个,(.+)表示任何多个字符。
rewrite  ^/([0-9]+)/jeff/(.+)$ /index.php?tid/$1/items=$2 last;

回到目录

Nginx rewrite规则相关推荐

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

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

  2. nginx rewrite规则语法

    在新主机的迁移过程中,最大的困难就是WP permalink rewrite的设置. 因为旧主机是用的Apache, 使用的是WP本身就可以更改的.htaccess,没有太大的难度.而这次在VPS上跑 ...

  3. nginx rewrite规则语法(关于break和last分析得很好)

    在新主机的迁移过程中,最大的困难就是WP permalink rewrite的设置. 因为旧主机是用的Apache, 使用的是WP本身就可以更改的.htaccess,没有太大的难度.而这次在VPS上跑 ...

  4. 运维之道 | Nginx rewrite 规则详解

    Nginx rewrite 规则详解 一.rewrite规则概念 rewirte 规则也称为规则重写,主要功能是实现浏览器访问 HTTP URL 的跳转,其正则表达式是基于 Perl 语言.通常而言, ...

  5. nginx Rewrite 规则

    一:nginx  Rewrite 规则 1:rewrite的概念: Nginx Rewrite功能是使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现URL重写以及重定向功能.R ...

  6. Nginx rewrite 规则详解

    Nginx rewrite规则详解 rewire规则也称为规则重写,主要功能是实现浏览器访问 Http Uri的跳转,其正则表达式是基于Perl语言.通常而言,几乎所有的Web服务器均可以支持URL重 ...

  7. nginx rewrite规则指南

    nginx rewrite规则指南 任何重写规则的第一部分都是一个正则表达式 可以使用括号来捕获,后续可以根据位置来将其引用,位置变量值取决于捕获正则表达式中的顺序,1引用第一个括号中的值,1引用第一 ...

  8. Nginx rewrite规则实现http跳转到https及301永久重定向

    Nginx rewrite规则实现http跳转到https及301永久重定向 环境准备: [root@ubuntu1804 ~]#curl https://linux2022.com -Ik HTTP ...

  9. Nginx Rewrite规则初探

    Nginx  rewrite(nginx url地址重写) Rewrite 主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要N ...

最新文章

  1. 2017年11月1号复习
  2. spring本地化默认英文_Spring3国际化和本地化
  3. 什么是好的API设计? 1
  4. Tips--TensorFlow报错:tensorflow:Early stopping conditioned on metric `val_loss` which is not available
  5. “鸡肋”的百度,掉队了 BAT? | 畅言
  6. Scrapy爬虫框架第五讲(linux环境)【download middleware用法】
  7. 考研政治思维导图之马克思主义基本原理
  8. nodejs python性能_监控Nodejs的性能
  9. c语言switch编写个人所得税,C语言编写一个计算个人所得税的程序,要求输入收入金额,能够输...
  10. Weblogic 部署两个应用
  11. python 日历控件_PyQt5每天必学之日历控件QCalendarWidget
  12. 5G时代的到来,对网络公关将产生哪些深远影响?
  13. 停息挂账一定要付首付款吗_什么是停息挂账?停息挂账能解决问题吗?
  14. php强类型 vscode,VSCode 扩展入门,后缀代码补全的实现
  15. 计算机课学生电脑怎么打开任务管理器,电脑任务管理器的打开方法
  16. 1.2.2 网络抓包工具之:Fiddler
  17. 【机器学习】聚类算法DBSCAN、K-means、Mean Shift对比分析及具体代码实现
  18. 青铜三人行之青蛙跳台阶
  19. 基于Qt的FreeType字体轮廓解析
  20. “我有技术到哪都是一样的”?年薪40W测试工程师被裁,回怼的这一番话,令人沉思

热门文章

  1. 测绘技能大赛-虚拟仿真数字测图(内业部分)
  2. C#操作GridView控件绑定数据实例详解(二)
  3. 【设计模式】2.Strategy 策略模式
  4. java togglebutton_简易ToggleButton
  5. 时代周刊2011年度50大最佳发明揭晓
  6. WebKit华丽转身:欧朋浏览器8.0新鲜出炉
  7. 使用python+Tkinter做一个自动关机的图形界面
  8. vscode快捷键记录
  9. 集装箱识别集装箱智能识别集装箱残缺检测,飞瞳引擎AI集装箱识别检测云服务全球两千+企业用户智能铁路智能化港航,集装箱信息识别免费
  10. 一机两用升级版NDI视频转换器,NDI转HDMI/SDI双重功能