修改.htaccess文件达到301重定向的目的,其中如果想将domain.com域名下的所有url转到www.domain.com下,规则如下:" {$ z/ H, p" v' Y
( T3 H0 }4 b8 E% O9 G/ nOptions +FollowSymLinks
) W+ l# n8 t2 \" J+ ~* X4 PRewriteEngine on- I% n8 \! c, I; C
RewriteCond %{HTTP_HOST} ^domain.com [NC]
( Z$ Z) d' f5 o1 U/ {1 d5 x3 DRewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
. w: M* A4 r# I! \, {' R, A3 r
但实际用到的301转向并不是如此简单的应用,诸如程序调整目录,文件命名规则的改变,就需要用到正则表达式来设置相关的301重定向了,几个简单的301重定向正则表达式的例子如下:
: P& p, @4 T! v% P, y+ u4 w5 r0 |+ `! N. u) ?) n% O
RewriteRule ^(.*?)(\/\d.*)$ $1_bing$2 [R,L]
9 F& X3 X- C |' a2 L! x! vRedirectMatch ^/archiver/(.*)$ /bbs/archiver/$1 [L]
7 y5 {; _0 _7 SRedirectMatch ^/chrome/([a-zA-Z]+)/(.*).html$ /chrome/$1-$2.html [L]
; N& g4 @ f) ^# i' HRedirectMatch ^/msn/([a-z]+)/(\d{4})([0-9]+).html$ /live/$1/2009$3.html [L]/ d1 }; N3 p! b: r" \7 i9 g3 z; i
+ ~- g9 c$ n$ H( _! P6 ~0 c5 A" W4 t
([a-z]+)表示多位的小写英文字母。
0 f. Z8 D0 C8 }7 c8 S# u([a-zA-Z]+)表示多位的大小写英文字母。1 k5 W ?' F* T# H/ i7 ^7 s
?$ g) Y. U( L) R6 T4 H- i6 ?
([0-9])表示单个的阿拉伯数字;
" F9 O/ P% w& V* \7 Z$ h([0-9]{1,2})表示两位的阿拉伯数字;- @4 B! G7 W8 F0 J8 `
([0-9]+)表示多位的阿拉伯数字;
5 @ z' C1 x. _" I8 Q
, m/ f9 D$ X. b$ b(\d)同上一个。
; o5 H. R- ^5 H/ B(\d{4})表示多位的阿拉伯数字的前四位数字。8 A2 u9 `4 W" S3 ]
(\b)表示单词的开始或结束; (\w)表示任意的字母或数字或下划线或汉字;+ K( D$ @8 ]4 D& j2 V
(\s)表示任意的空白符; 3 J. ]! O- B. U% Z' U4 A# e
$ C ]7 K# [" f* u- U7 ]9 `(.*)表示任意字符。 " [) L* W: a7 s& f% [
3 T: X# o9 t- z, a, g [7 `
redirect 301 /go/search.htm /data/google.html
( O: l n5 b( z) X0 B, P+ Rredirect permanent /go/search.htm /data/google.html
x. R% ]& a, A' j3 J4 q8 |& c其中redirect permanent和redirect 301应用效果相同。1 H$ j& z. K8 ?8 ] Z/ O' l2 l6 v' U0 Z
% ?. C+ v, O- e0 O+ { u更多正则表达式的内容看这里吧http://zh.wikipedia.org/wiki/正则表达式' G! [0 a/ W$ |3 D
月光博客自己总结的常用正则表达式http://www.williamlong.info/archives/433.html+ D% o9 ~3 |9 I
|