修改.htaccess文件达到301重定向的目的,其中如果想将domain.com域名下的所有url转到www.domain.com下,规则如下:
2 V9 x( i$ v- L7 h
: R* S# a8 ?0 y' J3 o1 pOptions +FollowSymLinks/ s2 x& B% Z' O, R [
RewriteEngine on6 Y: [/ w1 x5 ^2 X
RewriteCond %{HTTP_HOST} ^domain.com [NC]: h) R8 G' Y7 p1 [* L4 i
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] 3 Y0 T2 H' |' |( X
% p. Z+ j2 u$ B
但实际用到的301转向并不是如此简单的应用,诸如程序调整目录,文件命名规则的改变,就需要用到正则表达式来设置相关的301重定向了,几个简单的301重定向正则表达式的例子如下:( O9 ^7 z3 E; ~4 _* p
( _* G6 d6 h3 r% D+ l# bRewriteRule ^(.*?)(\/\d.*)$ $1_bing$2 [R,L]5 Y1 k: k3 e4 _% K" e
RedirectMatch ^/archiver/(.*)$ /bbs/archiver/$1 [L]
9 p( `# C7 K# Y4 p: VRedirectMatch ^/chrome/([a-zA-Z]+)/(.*).html$ /chrome/$1-$2.html [L]; q$ ~1 n3 x; N0 p
RedirectMatch ^/msn/([a-z]+)/(\d{4})([0-9]+).html$ /live/$1/2009$3.html [L]
. o5 B) x2 f0 V# s w' W( n/ j2 q: g, t7 R
: `1 j8 K9 z. Y. {
([a-z]+)表示多位的小写英文字母。
. ^. ]0 V, W) j/ ^ Y" b([a-zA-Z]+)表示多位的大小写英文字母。& e6 t- j4 ?5 {* K8 n$ f/ B+ W
# S9 n2 r8 U2 Q0 s$ \0 u5 o1 H8 B
([0-9])表示单个的阿拉伯数字;, g; v* g, a( C, k6 m
([0-9]{1,2})表示两位的阿拉伯数字;' g2 d5 p* b% d. z" m/ H4 S6 V5 `
([0-9]+)表示多位的阿拉伯数字;4 w; W; z. ^& J! C) c
) ^' Y x5 O5 x. `5 D, m4 R8 k2 {(\d)同上一个。8 B* R! T1 ~; ~' e4 g
(\d{4})表示多位的阿拉伯数字的前四位数字。4 D; t8 J; I" Q' h' h
(\b)表示单词的开始或结束; (\w)表示任意的字母或数字或下划线或汉字;( ?6 X8 Y5 C( a4 | O6 `
(\s)表示任意的空白符;
) j4 M6 B/ c+ x( D$ ^+ [( L6 G" Y( P% t/ d) V) j
(.*)表示任意字符。 4 V" L, l; b, Q) S
' \8 U! ^! ?, E8 O% X7 h% Uredirect 301 /go/search.htm /data/google.html
" }7 H: i/ b5 l m4 |! Nredirect permanent /go/search.htm /data/google.html1 U& L7 _# B4 s6 M
其中redirect permanent和redirect 301应用效果相同。
" n. ^9 Y! H% J1 F6 J
1 Y+ X! [# b3 l( j更多正则表达式的内容看这里吧http://zh.wikipedia.org/wiki/正则表达式
9 K$ U* }; c7 n月光博客自己总结的常用正则表达式http://www.williamlong.info/archives/433.html9 K* R1 R% o- m' B
|