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

nginx 301 302重定向跳转配置

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

761

主题

775

帖子

3万

积分

董事

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

积分
32853
发表于 19-4-1 14:15:15 | 显示全部楼层 |阅读模式      紫钻仅向指定用户开放  
                   首先看一个完整代码示例,关于nginx 301 302跳转的。( ?$ j7 d' x5 n1 V
  301跳转设置:
: L3 J4 ~; O1 N7 _/ `$ k& L+ |  server {" `9 Y4 i7 R7 B
  listen 80;
6 \7 A$ [; q* K4 E/ ], E  server_name qiuqiufa.com;
3 t: a2 w6 }8 A. J4 x6 c  rewrite ^/(.*) http://www.qiuqiufa.com/$1 permanent;4 b* Y% }7 l9 `* p8 c. H+ T+ P  n
  access_log off;& K2 c# H1 i, a: ~# P+ ?
  }
4 k' j7 c2 E; e1 ?3 J1 [' F9 ?  302跳转设置:
: G. ~9 l9 k6 A& l! `  server {
4 z5 ~( N6 x6 D2 M( R: N: |" y; f  listen 80;
4 f9 E3 F0 ?3 R4 j4 ?  server_name qiuqiufa.com;
7 s$ F$ C6 M! V  rewrite ^/(.*) http://www.qiuqiufa.com/$1 redirect;2 i2 }4 T; B8 f* a- U
  access_log off;% a, R$ Q  }8 u( M
  }* f4 R/ q+ {- v  r, x
  在看下关于nginx 301 302跳转的详细说明文档
9 F! q" M8 K5 G, I; \  server {% l1 ~& L" H" A) U. U8 x( J( R
  server_name qiuqiufa.com;; E9 L/ @+ w( T  ]0 ]/ T! Y# v
  rewrite ^/(.*) http://www.qiuqiufa.com/$1 permanent;
- T9 Z# a& n) d' E1 j  }9 o& N7 N( A- ?% @; h' K
  last – 基本上都用这个Flag。& R, c4 Y  [* c: D8 Q
  break – 中止Rewirte,不在继续匹配4 d" O9 ~1 A$ X. a* k- j1 C. E
  redirect – 返回临时重定向的HTTP状态3027 v+ ?0 Y  y9 Q- k) n
  permanent – 返回永久重定向的HTTP状态301
' }2 H  B8 e/ }4 T  v4 P) e* |6 C  Nginx的重定向用到了Nginx的HttpRewriteModule,下面简单解释以下如何使用的方法:
$ L) a, H* N* N' R4 G+ R# r. [  rewrite命令7 r. J5 D6 r0 O7 V# u6 g
  nginx的rewrite相当于apache的rewriterule(大多数情况下可以把原有apache的rewrite规则加上引号就可以直接使用),它可以用在server,location  和IF条件判断块中,命令格式如下:0 K, q% s1 X8 ~) G
  rewrite 正则表达式 替换目标 flag标记( c+ f3 h0 p2 M3 c% t9 _, ~3 I
  flag标记可以用以下几种格式:
5 h* W4 @. X  J3 j6 j9 p  last – 基本上都用这个Flag。1 |) L( U4 `+ l3 k1 d& }
  break – 中止Rewirte,不在继续匹配
& o! [* Q5 s' K- s  redirect – 返回临时重定向的HTTP状态302
- m6 _1 U) ^/ m2 s8 _  permanent – 返回永久重定向的HTTP状态301
2 y! T9 c$ W5 f2 O9 H+ {  特别注意:: S" B7 |/ O' C
  last和break用来实现URL重写,浏览器地址栏的URL地址不变,但是在服务器端访问的路径发生了变化;
# ~1 ?# F, V' s& A& t; M, C  redirect和permanent用来实现URL跳转,浏览器地址栏会显示跳转后的URL地址;) @9 J$ p7 d( ^5 I5 n4 i) _
  例如下面这段设定nginx将某个目录下面的文件重定向到另一个目录,$2对应第二个括号(.*)中对应的字符串:0 S4 F! y' G: p1 R, `9 |2 _
  location /download/ {
+ I  z4 s- j6 F; x! ^1 K3 v! D. {  rewrite ^(/download/.*)/m/(.*)..*$ $1/nginx-rewrite/$2.gz break;
2 q% B1 [/ }9 _) t- I' E: ^  }" f( E& H! Z9 e' [0 b& \( r; ?
  nginx重定向的IF条件判断/ D* t' Y  I$ Y# s' o3 g- b2 M. e
  在server和location两种情况下可以使用nginx的IF条件判断,条件可以为以下几种:
) N5 ?$ I+ ?7 L+ E# z! _  B- N  正则表达式
  i, U6 y4 u2 i5 m  如:
2 M! }( O5 X" ~4 l; q4 S5 }  匹配判断! B6 X% y4 f" u/ [; h+ f
  ~ 为区分大小写匹配; !~为区分大小写不匹配1 P( c$ V: d8 \3 a& o# ?& F; y
  ~* 为不区分大小写匹配;!~为不区分大小写不匹配
3 W, Z# t& \/ H' }; G/ N  例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:& z# U! x- v9 Q! Z& X+ ?$ p" }4 {9 @
  if ($http_user_agent ~ MSIE) {
. s- h8 g( O" @  I  rewrite ^(.*)$ /nginx-ie/$1 break;
+ p4 O( i/ C" F& k  }
, Q. W( y  K. `) v  文件和目录判断# u* @$ L( e. P% ]6 \+ ?
  -f和!-f判断是否存在文件
0 }" u- j, O& x7 r% G* W  -d和!-d判断是否存在目录
2 j9 M1 f% u- T6 R2 S  -e和!-e判断是否存在文件或目录
. F) Y. u) |9 q" X2 i  -x和!-x判断文件是否可执行7 T4 p% R* V4 q! o
  例如下面设定nginx在文件和目录不存在的时候重定向:" o4 \# O- s& {! W, N
  if (!-e $request_filename) {/ K" T) T, Q% M3 H% \2 Q0 e
  proxy_pass http://127.0.0.1;! o) |* i. {0 a
  }
6 q$ v# u* M+ O& q  W6 R' N  return
8 G1 Y4 i1 z+ r' V; s  返回http代码,例如设置nginx防盗链:3 P! i" S) ~6 Q8 F7 l
  location ~* .(gif|jpg|png|swf|flv)$ {
, m, D5 ?, s1 |3 e( {* i/ _  valid_referers none blocked www.qiuqiufa.com www.test1.com;$ p$ @3 i; z" P( f7 I4 z
  if ($invalid_referer) {3 H3 H8 Z' g$ j: Z
  return 404;
* }6 e5 }( v- c5 g4 e1 F1 i4 {# ~  }
* I4 G& [; e. s" D  }
( R/ Y& p8 I8 j0 m   {$ w' d1 q6 ^! |% z- H
            
网站简介

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