|
|
环境:系统 Windows+Apache 2.2; S0 \+ r" N0 m2 P ~% y+ b- Q
1 R/ }' P0 L% d! ^3 B" w
加载Rewrite模块:
4 }9 g6 m6 P5 _在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。& ]2 f2 z& I) ]4 F9 W) e. p/ J
( i! A7 S& p# ]8 L允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):
& A* k! m' {% j! I* ]" D/ h& ?/ Z4 ] T. k# ^# j. \ l1 A! C
# AllowOverride controls what directives may be placed in .htaccess files.6 A; d k/ c5 Y5 p
# It can be “All”, “None”, or any combination of the keywords:% w" I( D! A% O: `' ^+ v
# Options FileInfo AuthConfig Limit: D# v' _1 m7 Y: s* w" k+ J
#4 ]) F) A. Y" X9 |7 P- P! l" l
AllowOverride All, s+ {( L" w$ q3 a% O d5 r
: @& ?, ^# B s
在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。8 K& Z; w5 F) I. _* u
0 D/ |1 `0 x: B1 ~( oApache Rewrite模块的简单应用:0 Z, ^) |& l; c3 F# `5 p
Rewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。
) g7 [( Q7 f0 h( S$ Z1 Y" x% r* I2 N9 h- y. q5 U, O
1、请求跳转
- ^: v9 S7 _, j3 b! F; E+ G. m目的是如果请求为.jsp文件,则跳转至其它域名访问。
c% H# y, v) b& F* a& O) [例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页9 j$ V) N/ L; i
注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。! A' t1 e3 O4 ]4 T Q. W
修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容. @( w9 @, I' c5 q* R$ I
- RewriteEngine on! X3 q" r# g! k9 R; c4 I
- #开启Rewrite模块
# Z7 c4 A! B& T& f- R7 Q) J - RewriteRule (.*)\.php$ http://www.xp6.org/$1\.jsp [R=301,L,NC]
复制代码 #截获所有.jsp请求,跳转到http://b.xp6.org/加上原来的请求再加上.php。R=301为301跳转,L为rewrite规则到此终止,NC为不区分大小写' o6 D3 Z) v! q: J& b
2、域名跳转" K$ ?/ N- o0 \# d0 P
如果请求为old.xp6.org下的所有URL,跳转至b.+ b3 s6 m Y% s' \8 h3 {) T
- RewriteEngine on
* H: |* C" k2 I# S7 H, i - #开启Rewrite模块% ^# Q* t' O8 _4 r# A; x; [
- RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]
. ?( E/ W4 Y# G; I - #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符# g$ e' s( n& ^" U7 [+ a
- RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链
; J' j9 j; j) w" Y( _! M% [如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容
: V7 Q/ k5 W* ^! d* F( K- RewriteEngine on' p0 U+ c' r4 L( _
- #开启Rewrite模块3 E: o+ @8 c$ q. N! \% {3 t% _
- RewriteCond %{HTTP_REFERER} !^$( L) v% U3 V- o
- #如果不是直接输入图片地址/ Z% `7 V9 N1 G. }4 i z
- RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]
- R6 f; g* N n1 Z - #且如果不是img.xp6.org所有子域名调用的& I3 c' a% D& z* k7 h. X
- RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]8 C% B) {+ a& Y( c* ?4 \3 T* p
- RewriteCond %{HTTP_REFERER} !qq.com [NC]' o6 Z; t( d r
- RewriteCond %{HTTP_REFERER} !google.com [NC]% u; e6 o' H2 n
- RewriteCond %{HTTP_REFERER} !google.cn [NC]
( Z& _4 b/ U# _ - RewriteCond %{HTTP_REFERER} !baidu.com [NC]2 a+ _8 Q( l0 s' w/ y- l
- RewriteCond %{HTTP_REFERER} !feedsky.com [NC]' Y/ e4 q0 }$ W: y4 j1 m
- RewriteRule (.*)\.(jpg|jpeg|jpe|gif|bmp|png|wma|mp3|wav|avi|mp4|flv|swf)$ http://xp6.org/err.jpg [R=301,L,NC]
复制代码 4、不需要定义.htaccess文件1 o* i: A5 c2 ]3 V( O
在Apache2\conf\httpd.conf 最后一行添加
$ i9 c; A, x% z9 B+ P1 R- RewriteEngine On) ]' ?7 N( [7 z+ q
- RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪: g$ X- a) V( b4 q- p
$ \: D& d8 Z. F9 v+ yLinux+Apache环境配置类似。
( P5 B5 E7 _. c8 T9 U& r/ ]$ p, c
3 A" H( V) J$ d! ^1 r$ Y) j% p |
|