Nginx rewrite 的 last 以及 break 的区别

last:rewrite匹配后,会再次发起一个请求,只会对location里的规则再次匹配。

break:rewrite匹配后,不会发起请求,也不会匹配后面的规则。

举例:

location / {

root html;

index index.php index.html index.htm;

}

if ($request_uri ~* /cms/) {

rewrite "^/cms/(.*)\.php" /cms/index.php break;

# 这里使用last也可以,单独的if只处理一次

# "if"和"("需要空格

}

location / {

root html;

index index.php index.html index.htm;

if ($request_uri ~* /cms/) {

rewrite "^/cms/(.*)\.php" /cms/index.php break;

# 这里使用last会造成死循环,在location里的if会处理多次

}

需要注意url有问号的情况

比较不加"?"和加上"?"标记的URL跳转区别

rewrite ^/test(.*)$ http://www.yourdomain.com/home permanent;

访问http://www.yourdomain.com/test?id=5经过301跳转后的URL是

http://www.yourdomain.com/home?id=5

rewrite ^/test(.*)$ http://yourdomain.com/home? permanent;

访问http://www.yourdomain.com/test?id=5经过301跳转后的URL是

http://www.yourdomain.com/home

转载于: http://liuping0906.blog.51cto.com/2516248/1301125

时间: 2024-11-09 13:01:00

Nginx rewrite 的 last 以及 break 的区别的相关文章

Nginx配置的rewrite编写时last与break的区别详解

rewite 1. server块中的rewrite: 在server块下,会优先执行rewrite部分,然后才会去匹配location块 server中的rewrite break和last没什么区别,都会去匹配location,所以没必要用last再发起新的请求,可以留空. 2. location中的rewirte: 不写last和break -    那么流程就是依次执行这些rewrite 1. rewrite break -        url重写后,直接使用当前资源,不再执行loca

Nginx rewrite 中break与last指令的区别

PS:原创文章,如需转载,请注明出处,谢谢! 本文地址:http://flyer0126.iteye.com/blog/2257670 nginx rewrite指令语法:rewrite regex replacement [flag];默认值:无作用域:server,location,if如果一个URI匹配指定的正则表达式regex,URI就按照replacement重写.rewrite按配置文件中出现的顺序执行.flags标志可以停止/继续处理.如果replacement以"http://&

[转] nginx rewrite 中brake last 区别

在使用nginx重写(即rewrite)机制时,大家一般会用到last和break,关于这两个指令的作用,网友问的挺多,网上的讨论也挺多,这里做个总结: 网友的给力解释: last: 重新将rewrite后的地址在server标签中执行 break: 将rewrite后的地址在当前location标签中执行 nginx官方解释: last:     stops processing the current set of ngx_http_rewrite_module directives fol

nginx rewrite标签配置以及用户认证配置

一.nginx  rewrite标签 rewrite 实现URL的改写主要是实现伪静态 1.  rewrite指令语法 指令语法:rewrite regex replacement[flag] 默认值:none 应用位置:server,location,if rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分内容,重定向到replacement部分内容,结尾是flag标记,下面是一个简单的URL Rewrite跳转 Rewrite ^/(.*)http://www.eti

nginx——rewrite模块

1.什么是Nginx的Rewrite规则? Rewrite主要的功能就是实现URL的重写,Nginx的Rewrite规则采用PCRE(Perl Compatible Regular Expressions)Perl兼容正则表达式的语法进行规则匹配,如果 您需要Nginx的Rewrite功能,在编译Nginx之前,须要编译安装PCRE库. 通过Rewrite规则,可以实现规范的URL,根据变量来做URL转向及选择配置. (1)一些使用MVC框架的程序只有一个入口,可以通过Rewrite来实现. (

nginx rewrite php的CI(CodeIgniter)框架

一. 了解nginx rewrite: 正则表达式匹配,其中: * ~ 为区分大小写匹配    * ~* 为不区分大小写匹配    * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 文件及目录匹配,其中: * -f和!-f用来判断是否存在文件    * -d和!-d用来判断是否存在目录    * -e和!-e用来判断是否存在文件或目录    * -x和!-x用来判断文件是否可执行 flag标记有: * last 相当于Apache里的[L]标记,表示完成rewrite    * bre

nginx rewrite规则语法

在新主机的迁移过程中,最大的困难就是WP permalink rewrite的设置. 因为旧主机是用的Apache, 使用的是WP本身就可以更改的.htaccess,没有太大的难度.而这次在VPS上跑的是Nginx,主要是因为Nginx的速度比Apache要快很多. 但是另一方面就不是那么舒服了,因为Nginx的rewrite跟Apache不同,而且是在服务器上面才能更改. 下面是其间的一些研究笔记.(以下用例如无特别说明均摘自nginx wiki) /1 Nginx rewrite基本语法 N

Nginx Rewrite详解

引用链接:http://blog.cafeneko.info/2010/10/nginx_rewrite_note/ 原文如下: 在新主机的迁移过程中,最大的困难就是WP permalink rewrite的设置. 因为旧主机是用的Apache, 使用的是WP本身就可以更改的.htaccess,没有太大的难度.而这次在VPS上跑的是Nginx,主要是因为Nginx的速度比Apache要快很多. 但是另一方面就不是那么舒服了,因为Nginx的rewrite跟Apache不同,而且是在服务器上面才能

nginx+rewrite+proxy+cache基本实验

今天分享下nginx+rewrite+proxy+cachenginx于apache的区别 1.nginx基于ip做限制小实验: 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_n