修改.htaccess文件达到301重定向的目的,其中如果想将domain.com域名下的所有url转到www.domain.com下,规则如下:
- j6 {( [2 ]' U2 U
9 g3 n, M% A( h3 w) COptions +FollowSymLinks
" f# v4 Y6 O4 R7 \3 vRewriteEngine on
) u0 e9 X1 H) G5 | g; uRewriteCond %{HTTP_HOST} ^domain.com [NC]
$ `. X. P: d% k6 P, M3 R* W. URewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] 7 S$ `* w7 Y) A8 O9 {5 ]- w% @
1 y# h9 \2 c9 a) P! z" @但实际用到的301转向并不是如此简单的应用,诸如程序调整目录,文件命名规则的改变,就需要用到正则表达式来设置相关的301重定向了,几个简单的301重定向正则表达式的例子如下:
' t C% a) V! a8 c& E9 A
, t h5 v9 [3 d6 HRewriteRule ^(.*?)(\/\d.*)$ $1_bing$2 [R,L]
; M% z0 {- [+ u: d; W7 dRedirectMatch ^/archiver/(.*)$ /bbs/archiver/$1 [L]
( d: r' d" Y5 `+ C5 ?RedirectMatch ^/chrome/([a-zA-Z]+)/(.*).html$ /chrome/$1-$2.html [L]" E3 V& z5 j q6 ]
RedirectMatch ^/msn/([a-z]+)/(\d{4})([0-9]+).html$ /live/$1/2009$3.html [L]
- w7 W# G1 v, X4 Q. d) ?3 l @
. G" C9 }) _3 |1 Q2 K+ U1 k5 Z$ P4 H, e4 M
([a-z]+)表示多位的小写英文字母。
$ i( W m; ]8 V+ P([a-zA-Z]+)表示多位的大小写英文字母。
7 ?0 i1 v H2 q
3 X# g0 i2 J) `% L([0-9])表示单个的阿拉伯数字;
# m; t" T4 j4 c C([0-9]{1,2})表示两位的阿拉伯数字;! G) m" p( A7 K v7 g
([0-9]+)表示多位的阿拉伯数字;
$ o$ j5 H8 Q& b% e0 ]. I& S |2 m3 O* e, I! S1 g
(\d)同上一个。
4 W& h2 k, C6 w6 f7 b4 o: _(\d{4})表示多位的阿拉伯数字的前四位数字。
$ H- h! x3 |! ^7 U5 L1 a(\b)表示单词的开始或结束; (\w)表示任意的字母或数字或下划线或汉字;
6 _* B( {" h* M N" ^/ x(\s)表示任意的空白符;
/ a' J( t- C1 |" X. M' Q, w2 ]9 m/ w0 M# s
(.*)表示任意字符。
) Q" ]$ ~1 T- L1 d8 U+ _
" \( d2 V$ b, o y8 uredirect 301 /go/search.htm /data/google.html: @+ }& x# V& J$ q! `; Y9 L
redirect permanent /go/search.htm /data/google.html8 B( c+ ~! q! ]. J/ G
其中redirect permanent和redirect 301应用效果相同。
+ S7 g6 V" b+ M( x6 W' U
8 ?" H# `! M# }+ ^& [更多正则表达式的内容看这里吧http://zh.wikipedia.org/wiki/正则表达式
) |! s7 f @- M+ A月光博客自己总结的常用正则表达式http://www.williamlong.info/archives/433.html$ _4 L1 b4 M$ _! X7 |4 F
|