修改.htaccess文件达到301重定向的目的,其中如果想将domain.com域名下的所有url转到www.domain.com下,规则如下:9 a' L* V7 T* p
8 u+ m3 C+ a$ Q6 tOptions +FollowSymLinks
0 g5 ^ Q7 Z+ A* L, o0 f" uRewriteEngine on
6 x3 j& w+ A# ?6 QRewriteCond %{HTTP_HOST} ^domain.com [NC]0 @* r( G& B$ o, v' K+ h
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
* e" c. N5 H2 d3 h- ~7 i2 H/ x, I) U" r: n
但实际用到的301转向并不是如此简单的应用,诸如程序调整目录,文件命名规则的改变,就需要用到正则表达式来设置相关的301重定向了,几个简单的301重定向正则表达式的例子如下:6 ?) k7 [. C7 `0 P1 l; I" f3 z: Z; v! ]
$ {$ ~2 V& Z2 O$ U4 S6 XRewriteRule ^(.*?)(\/\d.*)$ $1_bing$2 [R,L]
! G7 p0 V% C b0 [% |RedirectMatch ^/archiver/(.*)$ /bbs/archiver/$1 [L]: A. y. k0 H4 i- L: k3 d. t
RedirectMatch ^/chrome/([a-zA-Z]+)/(.*).html$ /chrome/$1-$2.html [L]) |; b" b: l2 n' f, B
RedirectMatch ^/msn/([a-z]+)/(\d{4})([0-9]+).html$ /live/$1/2009$3.html [L]
+ _; x6 J9 v) H7 l% U7 _: n
# _/ R m, ~/ p3 X. r9 P) A" b' Q+ K z5 x' K; f$ V6 O" \ v
([a-z]+)表示多位的小写英文字母。
7 O, p; @0 s% p6 c([a-zA-Z]+)表示多位的大小写英文字母。
' n+ T! l# p! F1 F( ? d5 Z f; p8 R! O5 I6 y6 A( K
([0-9])表示单个的阿拉伯数字;
% q' p0 C$ r8 v1 ]4 T([0-9]{1,2})表示两位的阿拉伯数字;
7 H. J9 y& ~ l2 ^+ `([0-9]+)表示多位的阿拉伯数字;1 D$ A2 A# j7 z4 B, |% R
$ V' m6 }" ], R) a8 P. M(\d)同上一个。( {7 J$ r" L! D, O5 T m1 U+ e
(\d{4})表示多位的阿拉伯数字的前四位数字。
3 c# |% r4 |9 I' G9 J- E7 u& E7 [(\b)表示单词的开始或结束; (\w)表示任意的字母或数字或下划线或汉字;/ |" w5 `) k/ ?4 E
(\s)表示任意的空白符;
6 q/ ~# ~" `" `7 M9 m( H1 q- b
, d3 K J$ e- t# T6 h+ X F4 V(.*)表示任意字符。
' E5 o: V2 I. M3 P, Q" B; u# @( N( _
, V0 I% E# d T( vredirect 301 /go/search.htm /data/google.html. w1 A6 a; |( ?" j+ h0 r% G
redirect permanent /go/search.htm /data/google.html
7 q2 a) h0 Z) [6 u$ [$ b其中redirect permanent和redirect 301应用效果相同。
3 q% \ l2 C! Q5 P9 Z; I' u" H; [/ S6 p3 b
更多正则表达式的内容看这里吧http://zh.wikipedia.org/wiki/正则表达式! ~5 q# a# I' e# f5 C
月光博客自己总结的常用正则表达式http://www.williamlong.info/archives/433.html b; _6 F: H+ u9 h# v* V
|