|
|
环境:系统 Windows+Apache 2.2 ? [6 u, F( Z0 U( T8 V8 A
3 ]5 e# q: n' _. k7 ]2 h
加载Rewrite模块:
t4 p8 u' k' k+ o' V在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。
) U3 l* Z7 _" _- k3 W8 G
' J0 b+ j5 d, Q% N. Q6 L允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):( z) q+ r | p6 U( }9 x1 }
4 I8 `) |5 ?0 f% y4 [# AllowOverride controls what directives may be placed in .htaccess files.
1 w: T/ d3 O8 a. J; L9 h# It can be “All”, “None”, or any combination of the keywords:; F& h% z. A! p5 w; |0 p8 F9 F
# Options FileInfo AuthConfig Limit, s, Y! T0 o' v3 r k
#
/ \; O9 W2 U4 Y9 h+ K3 D: vAllowOverride All5 G: P) j1 C+ X
' F$ M% X7 N# j$ |4 B' H k在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。
; r+ h; \% [4 t6 b' T
. H' a4 W& w h7 AApache Rewrite模块的简单应用:
. f C6 D! f7 A3 Z A4 R* oRewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。9 @2 d+ W% k( \8 _# \# Q! a; v
: Z C. U0 T$ H# W" A; B: |; D# [
1、请求跳转
! u% C" t3 y) h目的是如果请求为.jsp文件,则跳转至其它域名访问。; U8 X* |6 l% @/ i5 r0 ?' _
例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页% i& j. k0 C1 R7 w0 ]& n
注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。6 O, i4 N8 _! V H z
修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容
, ^2 \, Z* I% v1 O# {' R! m- RewriteEngine on3 d( y& ~ H$ B$ G5 C' ~( ]
- #开启Rewrite模块
( T k0 {: X2 j" H - RewriteRule (.*)\.php$ http://www.xp6.org/$1\.jsp [R=301,L,NC]
复制代码 #截获所有.jsp请求,跳转到http://b.xp6.org/加上原来的请求再加上.php。R=301为301跳转,L为rewrite规则到此终止,NC为不区分大小写# N T, A$ F' u9 ]3 t
2、域名跳转
) {8 l; ]1 G2 q* ]+ T5 i" K如果请求为old.xp6.org下的所有URL,跳转至b.. V8 u* s+ F0 Y2 z$ k3 N# r
- RewriteEngine on7 v8 q7 q1 M2 ~7 X: j5 O& @5 E# Z2 H
- #开启Rewrite模块# e( V5 Q: P* U# U# w& A+ ]) G p: V c
- RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]
2 h- r8 C2 M! j& u3 U - #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符
4 l p( I/ V2 i' J: u - RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链
6 t( h0 U( g! ~' a! A5 Q% D如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容
4 R; W6 ~. q0 p6 t( k- ?- RewriteEngine on
% D1 Z* d9 K, A: E - #开启Rewrite模块
( p1 q8 s8 s. b; }# J - RewriteCond %{HTTP_REFERER} !^$
. F% c' P! `) r% W0 J+ R - #如果不是直接输入图片地址, }9 Q5 y- p6 I& C) p
- RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]/ Y, v+ W4 X( d# h% g
- #且如果不是img.xp6.org所有子域名调用的
; ?4 ^+ b2 B* ]5 N2 C - RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]
& \. ]% Z4 s9 m7 K: g - RewriteCond %{HTTP_REFERER} !qq.com [NC]
4 c( V3 i' z) e/ G - RewriteCond %{HTTP_REFERER} !google.com [NC]( k) ?/ x- t0 W
- RewriteCond %{HTTP_REFERER} !google.cn [NC]
2 r1 q) N y; t# `! L - RewriteCond %{HTTP_REFERER} !baidu.com [NC]; e( u' D4 e$ v" I: C
- RewriteCond %{HTTP_REFERER} !feedsky.com [NC]5 E% B2 N2 P$ A" ?' h' l- y# b
- 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文件6 L9 x6 l& x, h `
在Apache2\conf\httpd.conf 最后一行添加
; a0 K4 F) [2 n2 k2 _( V" ~4 Z0 [- RewriteEngine On3 [! K# L/ I) w. @9 e: N w* u
- RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪' a3 @; C. m+ Q/ c
0 v r3 P/ r$ E4 |/ r
Linux+Apache环境配置类似。- }) g$ n2 U$ W
3 ] }; z2 a8 [3 b) B8 F( Z |
|