|
环境:系统 Windows+Apache 2.2& Z* y8 E. e9 e1 R* T; u1 c
8 T, k' ]3 O+ _, w- G+ `& c5 H& p
加载Rewrite模块:7 J: C+ J' o6 Y: s @' J- D
在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。
9 w5 m# r2 J6 u \0 L& J" x! x$ S
9 f9 _0 u6 Z: v' x8 K; p允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):
& }) I+ Q0 G$ O7 L9 B! U) o0 V2 d# k2 z$ E
# AllowOverride controls what directives may be placed in .htaccess files.6 X2 D% H, }+ |! w! J
# It can be “All”, “None”, or any combination of the keywords:
* \3 b# |6 X4 Y" p) {, B3 N# Options FileInfo AuthConfig Limit
! w% \& }# }; x, r4 b+ @#5 d3 }+ i# G" Z) P7 T0 G
AllowOverride All
4 K' [4 g4 R- c/ H
$ j& y# h1 ~1 F' r- i3 k5 h在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。
( x) O, }% |* I3 m: L) V4 u6 ]3 G& K* o' a: g
Apache Rewrite模块的简单应用:
& F* E7 c# S. P5 T6 O2 vRewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。8 M, k- C) K; V6 s
! i. w* K: p6 V/ W$ y1、请求跳转
* Y1 M9 Y$ N/ U. L" R" y2 ^目的是如果请求为.jsp文件,则跳转至其它域名访问。
3 ^1 ^3 D7 t i0 {; K' q例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页
" K9 k. r$ T: }: ~$ t0 g7 Z0 Y注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。: v1 P" S m( s2 Y- q# \0 _2 b" F
修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容
' e/ a* @: \$ q$ o% ]) _) p" y- RewriteEngine on6 u: @3 ~5 F3 p" p$ [" m8 r/ W
- #开启Rewrite模块
s6 X7 j) I3 T' A. t( v - RewriteRule (.*)\.php$ http://www.xp6.org/$1\.jsp [R=301,L,NC]
复制代码 #截获所有.jsp请求,跳转到http://b.xp6.org/加上原来的请求再加上.php。R=301为301跳转,L为rewrite规则到此终止,NC为不区分大小写( v4 o: k0 H2 X4 B2 i4 D
2、域名跳转
/ F6 s/ W' A- x8 K如果请求为old.xp6.org下的所有URL,跳转至b.
+ I, U1 W) E% D2 L- RewriteEngine on- Q9 A* B0 v5 f* f& Z7 V! _$ j7 S
- #开启Rewrite模块4 p/ c% Q6 b' V" F6 p1 n6 [
- RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]$ @# A7 K5 ]( Z! n4 `+ m
- #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符
9 i: t/ w0 B2 d4 ]7 Y - RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链
1 x1 G9 t. k* h1 I7 N( z如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容
- v( a9 [' v" x9 q# b% @+ Y7 X- RewriteEngine on4 w- G' k4 l' s6 a" G1 ~
- #开启Rewrite模块
1 `! L& N5 R8 r' _6 r - RewriteCond %{HTTP_REFERER} !^$
: _. J9 P# ]. P3 [) j& q0 K6 l3 z - #如果不是直接输入图片地址, A$ R1 i/ h+ ~) N( y
- RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]. N1 A* H2 m6 ~* \7 x0 ^$ S7 K9 L
- #且如果不是img.xp6.org所有子域名调用的
R8 ?. c1 L0 V" ~ - RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]
2 i! F N d5 C$ {7 G( W4 } - RewriteCond %{HTTP_REFERER} !qq.com [NC]
; X. y5 J. X( |# z0 M& n/ X - RewriteCond %{HTTP_REFERER} !google.com [NC]
; I; H" e) c' D6 H5 c7 q - RewriteCond %{HTTP_REFERER} !google.cn [NC]- N+ S$ b$ M4 g6 l5 }
- RewriteCond %{HTTP_REFERER} !baidu.com [NC]/ q- T, b9 @% b; Z% t% R1 _
- RewriteCond %{HTTP_REFERER} !feedsky.com [NC]) W+ W9 p( ~. n( `, Q
- 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文件
$ A+ s5 D! y" p5 Y# G' b5 m: \; C在Apache2\conf\httpd.conf 最后一行添加2 v$ F8 h4 ?: f% b) _
- RewriteEngine On a$ e" m% n N* b
- RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪
: |7 b; `' x! P6 p2 L
# h% l I2 q0 u, @+ e5 R M$ GLinux+Apache环境配置类似。
- p; F# @, h+ B
2 G; ^9 a8 \ R: P3 B( B |
|