修改.htaccess文件达到301重定向的目的,其中如果想将domain.com域名下的所有url转到www.domain.com下,规则如下:
! s/ d" h! W r* |# X# u2 |" I( A$ k5 Z( x$ T. ` Y8 X9 f
Options +FollowSymLinks$ s4 X& l" j4 l9 S. O1 K
RewriteEngine on
7 T# z4 H. {: Q4 ORewriteCond %{HTTP_HOST} ^domain.com [NC]
* [2 F( C& C) u1 c0 o5 FRewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
- ]0 V t' _$ n, T! `1 p: ?+ b9 h% W' o$ c* v( k; {1 W# s
但实际用到的301转向并不是如此简单的应用,诸如程序调整目录,文件命名规则的改变,就需要用到正则表达式来设置相关的301重定向了,几个简单的301重定向正则表达式的例子如下:+ i0 `4 J1 f4 B ^: \
' `" H+ H9 g+ ]2 M% S2 |' |
RewriteRule ^(.*?)(\/\d.*)$ $1_bing$2 [R,L]
2 C" m# d! ]( O6 lRedirectMatch ^/archiver/(.*)$ /bbs/archiver/$1 [L]
" G1 }$ L2 E: _RedirectMatch ^/chrome/([a-zA-Z]+)/(.*).html$ /chrome/$1-$2.html [L]" |4 i @) R$ z$ j* \" j8 R
RedirectMatch ^/msn/([a-z]+)/(\d{4})([0-9]+).html$ /live/$1/2009$3.html [L]
- \0 G T" a, o
9 C, ^: _$ L0 i8 m" N1 F7 c9 g6 [* o; R/ G
([a-z]+)表示多位的小写英文字母。 c7 |9 c9 T& ]: W( s
([a-zA-Z]+)表示多位的大小写英文字母。- F: d# T5 p1 U3 a. q* R
4 N& R* d2 h- Z1 z5 }([0-9])表示单个的阿拉伯数字;
- o8 B" o9 S; Z([0-9]{1,2})表示两位的阿拉伯数字;4 t/ Y; J% m% O- Z4 B$ O
([0-9]+)表示多位的阿拉伯数字;
4 R) w6 P" F$ N
4 m% b" j0 ~' w. D* j9 \8 t(\d)同上一个。; }* P, z( y6 @1 K; v
(\d{4})表示多位的阿拉伯数字的前四位数字。
$ }* G/ Y5 a* } k" j# g+ @(\b)表示单词的开始或结束; (\w)表示任意的字母或数字或下划线或汉字;
, m+ C7 S# {' F% x8 x" \(\s)表示任意的空白符;
0 i, @7 U5 d& l& {9 D$ P% k5 O% M: f; p1 }
(.*)表示任意字符。
! W5 i( {. P4 u1 k0 N3 o
. L9 I9 A- ?$ h, vredirect 301 /go/search.htm /data/google.html
* w I6 T( C3 ?+ P0 a$ tredirect permanent /go/search.htm /data/google.html
* x- ]' M9 \% l) B- h: y其中redirect permanent和redirect 301应用效果相同。" e, U3 N8 x$ m% U x5 B
: H9 {$ {, w9 E
更多正则表达式的内容看这里吧http://zh.wikipedia.org/wiki/正则表达式4 I% f4 w+ Q, b
月光博客自己总结的常用正则表达式http://www.williamlong.info/archives/433.html8 K/ l. }* f1 A: N
|