ct38 发表于 2018-11-11 06:44:10

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

页: [1]
查看完整版本: nginx rewrite的last和break浅解