腾讯云网站解决方案帮您轻松应对建站成本高/网络不稳等常见问题

nginx 301 302重定向跳转配置

1
回复
1436
查看
[复制链接]

765

主题

779

帖子

3万

积分

董事

Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72

积分
33025
发表于 19-4-1 14:15:15 | 显示全部楼层 |阅读模式      紫钻仅向指定用户开放  
                   首先看一个完整代码示例,关于nginx 301 302跳转的。( @5 ?% A2 l2 {  a2 M4 ~2 E/ x
  301跳转设置:
6 W7 j; `% g9 Y" a/ I  server {
. Z4 K' `6 j2 V+ m& Q6 [, P/ n  listen 80;
% m. d, \0 S& M+ v  d- s# b  server_name qiuqiufa.com;
) O# D$ Y5 v# `+ P: _1 M  rewrite ^/(.*) http://www.qiuqiufa.com/$1 permanent;
) G# |8 ]" e$ ]1 d  access_log off;
' [% _& J0 M0 Q8 z3 o  }0 U+ c7 E2 h3 l: o1 }
  302跳转设置:
# ~( z- b5 |2 v1 h% F6 R  server {% h7 c* H+ y8 r& o3 D
  listen 80;$ r+ I1 ~4 D8 t( @, ~
  server_name qiuqiufa.com;( i  Z7 n% C9 P* ~# e7 X8 y
  rewrite ^/(.*) http://www.qiuqiufa.com/$1 redirect;- r9 d3 n. J. H3 n% T# h3 U% B
  access_log off;4 v# A' n  N' P2 n6 C$ i3 d
  }5 o5 |$ H3 @# O
  在看下关于nginx 301 302跳转的详细说明文档4 r7 |3 O; y! \3 R2 ?9 z1 d0 s( l! z
  server {
5 \2 a- q! n- N+ b. H! T" K# `, F  server_name qiuqiufa.com;  F0 s- x$ f: ~" p+ [; C, g
  rewrite ^/(.*) http://www.qiuqiufa.com/$1 permanent;
" Z, Q+ A$ \  f3 N  K& @$ b3 N  }
1 M% s& W6 S0 V9 y. m  last – 基本上都用这个Flag。! G: w( A* [1 @- v% x1 A
  break – 中止Rewirte,不在继续匹配* d2 N& L' l, d. E. f; w1 s
  redirect – 返回临时重定向的HTTP状态302  n) [7 M5 G" z, F; D& h
  permanent – 返回永久重定向的HTTP状态301! t5 r. v1 ^$ U+ u% z  Y
  Nginx的重定向用到了Nginx的HttpRewriteModule,下面简单解释以下如何使用的方法:
. z, p& B3 p4 J! Q+ D6 w9 ~  rewrite命令2 W" B. H& L3 P2 q8 }+ }; s1 ?% \
  nginx的rewrite相当于apache的rewriterule(大多数情况下可以把原有apache的rewrite规则加上引号就可以直接使用),它可以用在server,location  和IF条件判断块中,命令格式如下:8 Y) `9 v- @8 C$ o/ q
  rewrite 正则表达式 替换目标 flag标记
- n) w# U9 T5 a! k: Z  flag标记可以用以下几种格式:
- Y/ L5 r: e$ H- V  last – 基本上都用这个Flag。
# y) s0 M" q4 _+ G' q$ q! g  break – 中止Rewirte,不在继续匹配
8 D. _2 {! x( T0 Q  redirect – 返回临时重定向的HTTP状态302/ ?0 v* E' z+ o  \8 \4 ]( k
  permanent – 返回永久重定向的HTTP状态301
5 P0 A! o+ Z; e, d( g  特别注意:0 Y& v/ q# z. I6 z$ ~4 G
  last和break用来实现URL重写,浏览器地址栏的URL地址不变,但是在服务器端访问的路径发生了变化;3 ]- H7 V8 A7 s$ W) d! g7 V
  redirect和permanent用来实现URL跳转,浏览器地址栏会显示跳转后的URL地址;
1 ?8 y0 k2 A# [/ ?0 V- M1 |  例如下面这段设定nginx将某个目录下面的文件重定向到另一个目录,$2对应第二个括号(.*)中对应的字符串:
! ~7 h- ?, h8 r$ P$ p, U* b  location /download/ {+ x: `& L& V7 G* u1 W8 M( e. n
  rewrite ^(/download/.*)/m/(.*)..*$ $1/nginx-rewrite/$2.gz break;
; a9 ~' i3 o& k9 }  }
6 j4 Y9 b( X& _9 a  nginx重定向的IF条件判断% g. P1 N6 B+ B. a" n- d: X
  在server和location两种情况下可以使用nginx的IF条件判断,条件可以为以下几种:
! J! |# i  U, }1 k, N  正则表达式4 {% u4 W" ^4 a; {! S
  如:
& A9 A5 H! M: l; {% |! P4 O: }$ e6 A  匹配判断7 H# Q8 r$ w+ Q, r1 {, N
  ~ 为区分大小写匹配; !~为区分大小写不匹配6 ]$ T( C" T8 P
  ~* 为不区分大小写匹配;!~为不区分大小写不匹配# E: X# s+ a6 s4 V
  例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:. g* Z2 s, x- W: s, L7 A7 u
  if ($http_user_agent ~ MSIE) {  w0 Q: t2 a" N) U4 P) o& N1 ~
  rewrite ^(.*)$ /nginx-ie/$1 break;
" t6 Y9 R/ `8 [8 ]0 R6 I$ _  }) Q$ z5 O! ?1 q
  文件和目录判断: M/ `* R# K6 l/ J6 v% O
  -f和!-f判断是否存在文件' Y) N  ~, @% W' v$ \/ T: @
  -d和!-d判断是否存在目录) D8 ^5 O9 @) B0 P
  -e和!-e判断是否存在文件或目录' A3 m& {( p' y& g
  -x和!-x判断文件是否可执行# D! D7 r% U/ J' O
  例如下面设定nginx在文件和目录不存在的时候重定向:
& Q8 q/ y5 k  R( E( w  if (!-e $request_filename) {8 L1 X7 {! t/ v; d$ j
  proxy_pass http://127.0.0.1;
4 y) X( v. [2 ]" W) u  }
6 T/ p9 d5 E) z  return
8 n0 N" a& x8 m# F  返回http代码,例如设置nginx防盗链:+ K! q& N: t; Q; e7 d
  location ~* .(gif|jpg|png|swf|flv)$ {# e: y5 C1 K& b; @
  valid_referers none blocked www.qiuqiufa.com www.test1.com;
% A1 m, m( |" B2 z. A) ]  if ($invalid_referer) {
8 q8 ]% a+ g5 p  return 404;
, v7 J5 v9 J; {0 p) M- o9 K  }9 F: X* c8 S% G6 D) I
  }/ M( s) B0 J2 N/ Z

! g4 h* w/ [1 T7 L% s& V            

0

主题

7

帖子

8

积分

1°伸手党

Rank: 2

积分
8
发表于 20-1-30 12:52:02 | 显示全部楼层         
12:52:02
回复

使用道具 举报

网站简介

球球发,是一家 Discuz! 商业插件、风格模板、网站源码、 Discuz!运营维护技术等于一体的交流分享网站,全站95%的资源都是免费下载,对于资源我们是每天更新,每个亲测资源最新最全---球球发(如果我们有侵犯了您权益的资源请联系我们删除