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

nginx 301 302重定向跳转配置

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

763

主题

777

帖子

3万

积分

董事

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

积分
32946
发表于 19-4-1 14:15:15 | 显示全部楼层 |阅读模式      紫钻仅向指定用户开放  
                   首先看一个完整代码示例,关于nginx 301 302跳转的。
+ N% ~% |) d5 L+ M0 ~9 G  301跳转设置:
% k- {( o. {- q& m$ b  server {3 z: v) e# y3 b$ [- p
  listen 80;; Q; y( n8 B, A$ O! Y9 t$ m
  server_name qiuqiufa.com;
4 F2 G, |) k/ M+ n  rewrite ^/(.*) http://www.qiuqiufa.com/$1 permanent;( G. b) \0 t3 }$ ^. }
  access_log off;
0 N: U& G! j& t3 d2 y: P7 \  }/ ~. Y  I; ~& B; _3 Z/ n/ f/ p
  302跳转设置:# \$ B/ e% J% y0 Z* g& v# h
  server {
4 C, D$ t+ V1 K5 q1 X  listen 80;0 J0 _* M9 Z. c' R' Z
  server_name qiuqiufa.com;
8 \# W) |3 I) X! H# H$ P  rewrite ^/(.*) http://www.qiuqiufa.com/$1 redirect;3 j' ?1 u- w- D
  access_log off;
# F7 \2 Q8 \$ B9 z6 v. f1 k  }
6 Q) I2 g" Q9 u  在看下关于nginx 301 302跳转的详细说明文档
! v0 L  H& Q6 U9 Q  server {0 p1 H% O: b& y5 o8 u5 j
  server_name qiuqiufa.com;, B$ N) ~6 Y/ n8 O  [+ L
  rewrite ^/(.*) http://www.qiuqiufa.com/$1 permanent;- _8 n- w( ^4 L9 V' |
  }. ~6 v% E+ w* b, S+ E
  last – 基本上都用这个Flag。
: ^" ^0 t; i7 M( n1 D  break – 中止Rewirte,不在继续匹配
+ k' A' \4 M1 F  redirect – 返回临时重定向的HTTP状态302: [& d- R& a& j  p* w
  permanent – 返回永久重定向的HTTP状态301& q  U# W( Y2 B0 ?3 Z5 b/ u) D
  Nginx的重定向用到了Nginx的HttpRewriteModule,下面简单解释以下如何使用的方法:* Y% ?! O) J7 A. I8 S
  rewrite命令
; U7 f5 c4 A. g$ l, ], T  nginx的rewrite相当于apache的rewriterule(大多数情况下可以把原有apache的rewrite规则加上引号就可以直接使用),它可以用在server,location  和IF条件判断块中,命令格式如下:
% Z5 t' a( R$ P# Z, g& [/ B  rewrite 正则表达式 替换目标 flag标记
* E2 s  o7 P+ k# {: n' M' F  flag标记可以用以下几种格式:: M7 k  S/ h0 r. _6 A) L
  last – 基本上都用这个Flag。" l) m3 U5 p: F6 h, u9 Y
  break – 中止Rewirte,不在继续匹配! G3 Q0 G8 l. ?( L
  redirect – 返回临时重定向的HTTP状态302  D- R' q2 N4 i6 y9 i+ R, p. z
  permanent – 返回永久重定向的HTTP状态301
+ W8 f+ ]9 G& c8 }' z' m  特别注意:& d. Y) t+ q7 L1 |  \# w
  last和break用来实现URL重写,浏览器地址栏的URL地址不变,但是在服务器端访问的路径发生了变化;
9 Q5 Q5 F4 j# q9 `" b  redirect和permanent用来实现URL跳转,浏览器地址栏会显示跳转后的URL地址;, Q3 l% L* Y( d
  例如下面这段设定nginx将某个目录下面的文件重定向到另一个目录,$2对应第二个括号(.*)中对应的字符串:
% ?1 D7 i: O& P$ n, e* q  location /download/ {
" }( `' w; v$ ?& m$ @5 N  rewrite ^(/download/.*)/m/(.*)..*$ $1/nginx-rewrite/$2.gz break;5 \  Q2 V% }$ U: j% A
  }# a* i) W' }3 m0 [% b) Y
  nginx重定向的IF条件判断& A4 P! j8 @/ B& D# U7 Z
  在server和location两种情况下可以使用nginx的IF条件判断,条件可以为以下几种:
) \0 d; M! z0 y, E/ R  正则表达式+ m, \* _3 q9 u- l3 a  l4 d0 ?  W
  如:4 u" S4 h% y/ c/ q
  匹配判断; Z! @! z& ~: z5 b. u' W/ v4 y7 |1 ]
  ~ 为区分大小写匹配; !~为区分大小写不匹配
3 [1 W7 F. Y  W2 t% S8 r  ~* 为不区分大小写匹配;!~为不区分大小写不匹配
- j8 G" L9 T1 \" S" j- b* X  例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:
' s- b' w, S% V: j$ C; m  if ($http_user_agent ~ MSIE) {' s# T3 q1 p# P2 E
  rewrite ^(.*)$ /nginx-ie/$1 break;
% H! X0 Z# Y4 l" L  }
. `  Q. t. x6 B% g# Z6 x$ z  文件和目录判断
# `' C' s8 A% Z2 H  -f和!-f判断是否存在文件
/ J. a: `+ ^5 N# E4 ?' N) f0 m  -d和!-d判断是否存在目录8 [) ]5 c+ n  H
  -e和!-e判断是否存在文件或目录: U" O: G3 K4 m/ O$ V
  -x和!-x判断文件是否可执行
0 a( Y7 O  q( {3 n5 J8 |' x! H- \6 X  例如下面设定nginx在文件和目录不存在的时候重定向:1 f/ q+ ~5 R9 r! S2 C, a2 u
  if (!-e $request_filename) {5 A& R8 A' n# [, w% z
  proxy_pass http://127.0.0.1;& m8 s9 z' g. ~8 d5 ~8 {" z# k0 o: p
  }/ R, q0 B- w; d$ i+ g
  return
% l: r# p( }1 ~7 [  返回http代码,例如设置nginx防盗链:
' |  |: ~6 k4 M. E' T  location ~* .(gif|jpg|png|swf|flv)$ {' e1 H* G+ [0 G8 N) @
  valid_referers none blocked www.qiuqiufa.com www.test1.com;9 H# N$ h/ @% _( s5 m
  if ($invalid_referer) {. w0 j) w% V- }3 w5 }( r
  return 404;1 a! }6 ^1 Y4 h5 a7 _! I8 `$ B
  }/ s+ T/ U4 q% l; i
  }
0 p1 f) f1 Z+ P- G
5 _! W% O. b1 C' F4 O. X/ D            
网站简介

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