nginx rewrite 模块

nginx rewrite 模块

return 指令

(1) 语法

(2) CODE

  • 301 永久重定向

  • 302 临时重定向,禁止缓存

  • 303 临时重定向,允许改变请求方法,临时重定向,禁止缓存

  • 307 临时重定向,不允许改变请求方法,临时重定向,禁止缓存

  • 308 永久重定向,不允许改变请求方法

(3) return 在各上下文的执行顺序
server return > location return > error_page

rewrite 指令

last 和 break 区别演示

假设 html 根目录如下:


```nginx
location /first {
  rewrite /first(.*) /second$1 break;
  return 200 "first";
}

location /second {
  rewrite /second(.*) /third$1 last;
  return 200 "second";
}

location /test {
  rewrite /xxxtest(.*) /second$1 break;
  return 200 "test";
}

location /third {
  return 200 "third";
}

演示 last 与 break 区别:

(1)访问 /first/1.html,会重定向到 /second$1,此时使用了 break,则停止继续匹配,直接访问 /second/1.html,这里返回 404

(2)访问 /second/3.html,会重定向到 /third$1,此时使用了 last,所以不会直接输出 /third/3.html,而是继续匹配,进入 location /third,然后返回 third

(3)访问 /test/1.html,此时 location /test 下的 rewrite 重定向失败(匹配失败),会直接走后面的 return 语句,返回 test

rewrite 301/302 重定向

开启 rewrite_log

rewrite_log 开启后,可以看到重定向日志,以便调试

原文地址:https://www.cnblogs.com/GManba/p/14092778.html