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

nginx 301 302重定向跳转配置

0
回复
987
查看
[复制链接]

761

主题

775

帖子

3万

积分

董事

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

积分
32815
发表于 19-4-1 14:15:15 | 显示全部楼层 |阅读模式      紫钻仅向指定用户开放  
                   首先看一个完整代码示例,关于nginx 301 302跳转的。5 f) X5 x5 Q7 x' n; W( T  Y
  301跳转设置:
( Z2 n% @# W) x  server {9 y# k2 K9 z" [% w' {1 O- P5 j" z
  listen 80;6 W( f, y4 M3 n! `9 H7 j3 E$ \! ~
  server_name qiuqiufa.com;. n/ J: O+ t' d8 E. M& h7 E
  rewrite ^/(.*) http://www.qiuqiufa.com/$1 permanent;
7 ^1 f6 q2 c1 s  access_log off;( U- k$ P. p0 _/ C" Q9 E3 w
  }. a2 S. S6 h& `
  302跳转设置:
+ r1 M& W' e* {/ n  server {) K6 Q5 o) m. ]( R( {6 ]
  listen 80;" s& L, F. ^( G4 l4 j
  server_name qiuqiufa.com;, z  g3 J/ Y; I* d0 H- [) R3 ]
  rewrite ^/(.*) http://www.qiuqiufa.com/$1 redirect;
) r9 V0 m5 `, E+ w" [+ i2 ?& t  access_log off;
/ U/ }) A% {0 p) ~& j4 y/ A* [  }
9 C! H# M2 j( }8 w3 O* T( O' _  在看下关于nginx 301 302跳转的详细说明文档, ], Y# y3 w3 V5 q
  server {
4 u7 ?' Y- A8 E7 \9 G' C* Z  server_name qiuqiufa.com;; v& v- U, z1 K9 }% [( V
  rewrite ^/(.*) http://www.qiuqiufa.com/$1 permanent;" G& P$ q( x5 V( N8 ~+ _
  }6 [* V  ]% v; ]9 t1 A
  last – 基本上都用这个Flag。
! [0 a; v( l' W6 Z5 m) Q; X$ G  break – 中止Rewirte,不在继续匹配
4 D8 e0 D% _7 b" _6 X  redirect – 返回临时重定向的HTTP状态302
- b- ]( ~' A" ?- X  permanent – 返回永久重定向的HTTP状态301  Z3 {3 U& f- u7 w! {4 m- M' v
  Nginx的重定向用到了Nginx的HttpRewriteModule,下面简单解释以下如何使用的方法:9 k+ {/ p4 A& Q9 |: A, M* Y
  rewrite命令! J  T5 v' h; O  O3 ?9 b4 [6 K
  nginx的rewrite相当于apache的rewriterule(大多数情况下可以把原有apache的rewrite规则加上引号就可以直接使用),它可以用在server,location  和IF条件判断块中,命令格式如下:
* Y, x8 N3 m2 Z& t  rewrite 正则表达式 替换目标 flag标记1 L3 G' b/ B) j* `9 X8 z
  flag标记可以用以下几种格式:8 G/ E# _$ ^+ b$ w3 P2 d
  last – 基本上都用这个Flag。, _. Q% p1 }. [  K
  break – 中止Rewirte,不在继续匹配
  L9 r2 P2 V! l9 `3 Z9 L4 Y1 T  redirect – 返回临时重定向的HTTP状态3022 n* G6 @0 G! l' Y
  permanent – 返回永久重定向的HTTP状态3017 t1 V/ P/ T) [! t( y
  特别注意:) [1 s% |: ^9 a9 V: U" c
  last和break用来实现URL重写,浏览器地址栏的URL地址不变,但是在服务器端访问的路径发生了变化;( u% ?; ]1 [7 O3 R. y
  redirect和permanent用来实现URL跳转,浏览器地址栏会显示跳转后的URL地址;) L9 j& L4 x( d$ S: s
  例如下面这段设定nginx将某个目录下面的文件重定向到另一个目录,$2对应第二个括号(.*)中对应的字符串:' i1 N! j) X5 t& [# F# F* M
  location /download/ {2 J. I7 t. L) r0 W
  rewrite ^(/download/.*)/m/(.*)..*$ $1/nginx-rewrite/$2.gz break;
* c# b/ ?& K/ C4 G) y  E1 Z  }! z: a; G% `, \& G  }' ]$ g
  nginx重定向的IF条件判断$ m3 m8 ~& G$ w9 Q* _
  在server和location两种情况下可以使用nginx的IF条件判断,条件可以为以下几种:
2 y- a# q/ j- G" N$ `( e( f  正则表达式4 K' q9 A. u( _  |( k' o& Z
  如:
, g4 t: ^5 r1 k  ]. _3 X5 j/ A  匹配判断2 r: J9 _/ ^  L4 G0 Y$ P
  ~ 为区分大小写匹配; !~为区分大小写不匹配
& ^* M, p- h  l% `4 E6 o: y  ~* 为不区分大小写匹配;!~为不区分大小写不匹配2 ?0 v0 |! [) P& p) Q
  例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:
! D0 G& e+ _  {% m7 p( M; \  if ($http_user_agent ~ MSIE) {0 v/ q5 @! ^* K2 q  \( \) ~
  rewrite ^(.*)$ /nginx-ie/$1 break;
6 y; E& K, j7 H3 V  }
0 J4 j! |  }. M. y  s' [4 `' T  文件和目录判断
8 _/ c% x) A/ t3 V* p" z( P  -f和!-f判断是否存在文件& s4 e( \1 L% k# c( E
  -d和!-d判断是否存在目录
# e1 o7 d4 e( q1 M: r1 k& N: Z  -e和!-e判断是否存在文件或目录, _9 x1 y2 k7 \1 }9 l/ H( d
  -x和!-x判断文件是否可执行
. g# u: B$ Z, P1 U  例如下面设定nginx在文件和目录不存在的时候重定向:
  l' C) ^* S0 G4 n! u( P# ?* v) ]  if (!-e $request_filename) {
% u5 ?: R0 D( {- p  proxy_pass http://127.0.0.1;* D& H& a0 s2 c1 _9 k
  }; e" R1 r: Q1 ?# `% q7 Y5 a; [
  return
+ }: J$ W! `2 X; E  返回http代码,例如设置nginx防盗链:
1 T# G1 C+ Y" j3 I8 t9 S" _- S  location ~* .(gif|jpg|png|swf|flv)$ {
; P! c. X1 ^( ?  valid_referers none blocked www.qiuqiufa.com www.test1.com;8 y) Z( f  C- P# }$ f4 |- z1 l
  if ($invalid_referer) {! O* g2 n5 l: D1 `2 N+ H. p
  return 404;3 z9 V3 X( `" ]1 i0 g, s
  }
! x- J  v' e- n0 C  }
& @  g/ ^: {6 z$ Q/ L
0 ?, P  [, C. K' G            
网站简介

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