|
|
环境:系统 Windows+Apache 2.2
+ ^% d, L4 l) B- x$ W: h
) M1 e' F/ `; ]1 m& q加载Rewrite模块:% B. n* J" F( i7 k5 Z- P
在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。5 g5 P! Z- C% w4 a5 G2 T
! u* d/ v+ G3 A0 {& `
允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):
' x9 j$ x6 K; O# u* K! N9 R: h% U( Z
# AllowOverride controls what directives may be placed in .htaccess files.' q: K- ?! T, e3 W" D' a
# It can be “All”, “None”, or any combination of the keywords:
- Y' q4 J1 l/ @2 V/ u4 R# Options FileInfo AuthConfig Limit
, y h* }' m) v) N+ [8 r#
' }: A- G2 p2 Q7 R, p- JAllowOverride All
K* W2 I$ z1 Y/ J$ W; o1 q2 Y" h
$ A; x# M) x* `" t2 s; Z在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。
* ~% n; K+ E$ Y1 I' o0 X9 |
- k; Y* G( m" q3 h: lApache Rewrite模块的简单应用:
+ x& Z1 x& b0 g2 n' ?Rewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。
# P3 Q/ J% @- x, t6 v0 o. A5 D5 R0 s7 V* l
1、请求跳转
% u. i2 G1 K! R8 }目的是如果请求为.jsp文件,则跳转至其它域名访问。
% P; S6 U' _. g" d例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页 |) i3 c6 L9 r( _
注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。
, e! P$ {- X. ? t( V修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容# i1 ?/ X* ~% f6 [ \8 a. I4 S
- RewriteEngine on
# N! f, w6 T q1 w1 Z+ X - #开启Rewrite模块" @# ]. v3 l. F
- RewriteRule (.*)\.php$ http://www.xp6.org/$1\.jsp [R=301,L,NC]
复制代码 #截获所有.jsp请求,跳转到http://b.xp6.org/加上原来的请求再加上.php。R=301为301跳转,L为rewrite规则到此终止,NC为不区分大小写, o) ?0 P. X! i4 t9 R1 |
2、域名跳转
@3 g0 ?# v7 l1 N- l% L! b0 c如果请求为old.xp6.org下的所有URL,跳转至b.
( i' m* q" I2 r) d O3 J- RewriteEngine on
: M) }5 p! V" W o& f. q6 ^( _ - #开启Rewrite模块# ~3 i/ A4 b, l( @; z
- RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC] S1 [1 w. L7 G8 w/ n {7 a O/ W' l( L
- #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符
1 n. g: l# q; G+ [+ n5 T h7 A - RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链
! t j5 }* p. [$ Z如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容4 w8 T9 Y0 M. ?' M! }) n" @
- RewriteEngine on2 F: Q' S+ U! Q4 J
- #开启Rewrite模块: r/ O* t' T4 [* z! w: H
- RewriteCond %{HTTP_REFERER} !^$
3 c9 S$ Y$ l2 b% H0 f: a - #如果不是直接输入图片地址) w5 c3 ~2 R& @: @
- RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]' z# v1 S2 }0 s: Z4 A& z& n m
- #且如果不是img.xp6.org所有子域名调用的* s8 @/ w+ z: Z- v
- RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]1 o+ ?2 Y0 L2 k0 H
- RewriteCond %{HTTP_REFERER} !qq.com [NC]
8 H5 E2 j6 m* F5 h% b/ O - RewriteCond %{HTTP_REFERER} !google.com [NC]3 O* J! C( k: x, a
- RewriteCond %{HTTP_REFERER} !google.cn [NC]
9 o6 y2 Y4 J& N0 j8 t) x+ o. l* Z - RewriteCond %{HTTP_REFERER} !baidu.com [NC]( ] i- @0 s- q# X8 T/ C
- RewriteCond %{HTTP_REFERER} !feedsky.com [NC]) L; N* _* ~7 Y* C
- 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文件
) {: E0 i) N" A0 V7 J在Apache2\conf\httpd.conf 最后一行添加( g6 {' r1 W* [" f- `. ^4 J
- RewriteEngine On
$ Q" w( w% D ?/ H7 `9 D& H9 m - RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪& u, E1 F" a, j! S0 `/ _% B1 W
" W( v7 Y i- D. b" y. Q( xLinux+Apache环境配置类似。
( J8 Q& A6 ~# w8 I0 n/ u
& j9 X8 u0 [( x |
|