|
|
环境:系统 Windows+Apache 2.2
8 u1 `# r1 {6 J2 v+ d. t% v+ p7 d! K$ ]( k& i' @- u, w* e
加载Rewrite模块:
9 d3 z+ J% W! s. R4 z5 d在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。# {( L( G5 S% t. W
9 | _2 Q+ w# k7 I/ X. X9 R/ J& q
允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):1 d2 X' Q/ T6 j
: `* v! [, o, o& |! r1 N. o. Q# AllowOverride controls what directives may be placed in .htaccess files.( }2 e0 d& d. q# k
# It can be “All”, “None”, or any combination of the keywords:
$ v2 B. M$ ^ ~+ E2 s7 p2 C+ J# Options FileInfo AuthConfig Limit* W# B" ^1 g, f+ g
#% T3 Y' k$ d* P4 `/ i" e
AllowOverride All
. l8 I) B7 t; O4 i* ?/ s( a
( T$ t) G* U. }; o6 H/ |7 c在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。. a1 }8 I1 v' [6 F! Q& Y5 B
4 ?! K5 N! G' Q- VApache Rewrite模块的简单应用:
) P; `7 i* O3 F0 _# W' tRewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。
* L' l+ i9 N5 J0 \% O6 e) T; ~; Q7 S4 }6 O: p* a; z b) g& d
1、请求跳转! W q3 ]2 j; O6 E
目的是如果请求为.jsp文件,则跳转至其它域名访问。
" ~" l: u5 K ~+ w! f5 `例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页
% [0 N, j* K8 B3 W! n$ Z2 e$ z% m注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。
+ [! h3 y/ \0 R/ D8 V修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容# E5 ]9 e! \% ]
- RewriteEngine on7 C2 w( P) F4 u6 @2 Y( y
- #开启Rewrite模块
. D: X J' N0 P" m) y2 |% _# e0 i) T - RewriteRule (.*)\.php$ http://www.xp6.org/$1\.jsp [R=301,L,NC]
复制代码 #截获所有.jsp请求,跳转到http://b.xp6.org/加上原来的请求再加上.php。R=301为301跳转,L为rewrite规则到此终止,NC为不区分大小写
" M! E* z l9 `1 ]6 Z( f2、域名跳转! W2 L5 d: K! P
如果请求为old.xp6.org下的所有URL,跳转至b.0 Q" k9 l6 J* n$ g$ w/ R8 e) h
- RewriteEngine on; l2 n! W$ u! i- b" W, @6 Y, |
- #开启Rewrite模块' D4 V ?" `1 O/ {
- RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]
: x/ A8 h( ^! i1 [" I2 C - #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符
& ^7 x: ^& d) _ - RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链6 \8 u3 G4 \+ a5 q \0 S
如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容
! q7 C3 y% C0 B9 b0 `- C- RewriteEngine on
( L# W& t- h7 H - #开启Rewrite模块
& V/ e* {# |) K7 o+ O+ z& d1 A - RewriteCond %{HTTP_REFERER} !^$
; y6 S6 ?$ V1 K- u* b7 K - #如果不是直接输入图片地址; T7 B7 a# P8 |4 v8 F
- RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]
8 G" p( M( w V! w( }7 K - #且如果不是img.xp6.org所有子域名调用的
( @) B* I/ k7 v, I7 ? - RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]' Q4 m6 W7 C5 B3 l4 V5 L8 G
- RewriteCond %{HTTP_REFERER} !qq.com [NC]
7 @! B: X7 X1 k" Q$ @ - RewriteCond %{HTTP_REFERER} !google.com [NC]
: x, O7 M) I9 {8 J - RewriteCond %{HTTP_REFERER} !google.cn [NC]; m# S' g: z/ ~! W
- RewriteCond %{HTTP_REFERER} !baidu.com [NC]
) G( |/ X. O8 U4 [$ g - RewriteCond %{HTTP_REFERER} !feedsky.com [NC]: Q, t# Z! {) N9 h2 V9 t5 Q9 L& _
- 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 }% K* N2 d7 K! p. c# D
在Apache2\conf\httpd.conf 最后一行添加4 J, ]! o2 m; l- ]% q# A6 _% q
- RewriteEngine On7 a1 U1 S+ {! ?& ?% k$ V" [
- RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪 v. `5 z& [3 d+ s D# J4 b: B% b
+ V$ q/ z; [$ y
Linux+Apache环境配置类似。9 f0 P% V6 K$ x- t, K! n4 _
. e2 c# C9 M j3 A! i2 f
|
|