|
|
环境:系统 Windows+Apache 2.2
! T: e8 o3 M1 r+ x/ C$ l2 T
f( D6 N9 ?( B: m加载Rewrite模块:
: Y& z/ B3 \1 {* s& b在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。
/ L3 c' \( l9 E2 Z5 k# G. \+ l1 P# B; }- a, Q
允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):
% `0 }/ L. d5 `9 W
: a$ K" Z- T8 `( G# AllowOverride controls what directives may be placed in .htaccess files.
# K1 ^- d$ a) S0 }* @# It can be “All”, “None”, or any combination of the keywords:: D3 ~4 F2 L) Y9 A* P: F5 `! T( t
# Options FileInfo AuthConfig Limit
, {- [+ n, D, r, z% a" b/ H! s#
6 R! }4 o' E( f" p- I% |# M; d5 JAllowOverride All- ^ P) o) w* r# @
# d6 I( p* j$ j- J
在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。
7 [1 z' L# N5 F. O+ F: K1 x6 t! t6 U+ ~8 [- u
Apache Rewrite模块的简单应用:1 s+ j9 `$ ?6 m" j
Rewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。$ M+ s1 r, O4 `8 m. X5 I# j5 Z
# R8 f$ {9 [- E/ J9 P5 x1、请求跳转
& c8 m( {4 A* S" M1 u5 G X0 q$ O. \目的是如果请求为.jsp文件,则跳转至其它域名访问。
. _- j3 _3 A5 t0 ]- Q* o例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页8 o1 d( ^2 |# u; r
注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。1 d0 u* X- S& o O. U8 p" `6 [0 h
修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容2 o* O7 o( s; x( S& f+ g
- RewriteEngine on5 \2 f+ @4 G7 A/ @
- #开启Rewrite模块 D8 U7 f7 a K; I7 T+ n5 U$ R: S
- RewriteRule (.*)\.php$ http://www.xp6.org/$1\.jsp [R=301,L,NC]
复制代码 #截获所有.jsp请求,跳转到http://b.xp6.org/加上原来的请求再加上.php。R=301为301跳转,L为rewrite规则到此终止,NC为不区分大小写0 ^. L; G/ ]3 A" S8 s7 b
2、域名跳转
* J9 d5 i! m& f8 s! l% R如果请求为old.xp6.org下的所有URL,跳转至b.
4 o" W' W. r) ?6 g- RewriteEngine on
1 r+ W" O* Z7 [) l - #开启Rewrite模块4 Y8 i; k3 B, `1 c9 ?% ^; ? ~
- RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]; w$ f# b! ^& p+ i; m- I6 j
- #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符
9 G; ~2 n1 s% ~0 e - RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链
$ X, d5 v/ C& v- t7 ~) J如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容
: D2 G& r8 {9 b# u; t- B3 ~- RewriteEngine on+ f6 x5 p. |: a2 N3 w
- #开启Rewrite模块
1 W# E0 x5 j3 A" S( {) w - RewriteCond %{HTTP_REFERER} !^$6 t* Z* N4 b. ^
- #如果不是直接输入图片地址$ }! y- o$ O: ]* R' }
- RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]
& v) O4 [, `2 x - #且如果不是img.xp6.org所有子域名调用的8 a) j ]$ G/ _1 T, U
- RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC] M% O' R$ B% V3 g/ P7 f
- RewriteCond %{HTTP_REFERER} !qq.com [NC]4 q8 J2 n) N# k6 D4 y
- RewriteCond %{HTTP_REFERER} !google.com [NC]
& A7 K& y+ Z, q$ ^9 M - RewriteCond %{HTTP_REFERER} !google.cn [NC]
$ ^5 \# c8 p' O/ { - RewriteCond %{HTTP_REFERER} !baidu.com [NC]$ C+ x$ {# W7 f( p2 k$ k5 U
- RewriteCond %{HTTP_REFERER} !feedsky.com [NC]7 [; a9 U8 j. g, M ]5 h# z
- 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文件' [5 J* Q" P; J- u3 W1 S* |
在Apache2\conf\httpd.conf 最后一行添加" N! b: j f# ~9 {
- RewriteEngine On
8 a# p8 p: U: N/ p i/ [) b/ K - RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪" R! N( u0 e$ z7 O2 F% p, j- l- Y
- Q5 z1 H" ^; I) O5 `Linux+Apache环境配置类似。
% H: c: h, v) }+ a o' W9 @. w
- I7 b* O4 t+ Q: W1 b |
|