|
环境:系统 Windows+Apache 2.2# v& H* a# N6 l; g9 x! h: V
* e! ^7 W1 Q& u/ p( T) g' x加载Rewrite模块:
: L, ^) t4 x* R" j7 u9 I; _在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。
% S l1 U* I( j# d
- x# {/ y6 O6 s* n+ K0 S允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):0 c* {* U" a% @6 j6 k1 z3 u% _+ o
1 N" _: n) U- A$ i8 X# AllowOverride controls what directives may be placed in .htaccess files.
# { D, v7 ?8 R3 I# It can be “All”, “None”, or any combination of the keywords: N2 A* m, B) v0 m
# Options FileInfo AuthConfig Limit
1 e( A4 r. t3 o" M# i2 ?#+ R3 e% [/ h, I9 \
AllowOverride All5 g3 T3 x6 Q* p. }
! b4 h: l" H ^在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。: E z8 V2 E0 m. m$ y
' _7 x# e- A) `6 C
Apache Rewrite模块的简单应用:
" P5 R( A" f- Z6 Z) x% ZRewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。
. B. C( l- R4 z% ~/ i5 x& ^" D; T, I& J
1、请求跳转
# F% J$ P3 E; K0 W" @) R/ b目的是如果请求为.jsp文件,则跳转至其它域名访问。6 }7 n. A! t+ h5 ]7 p1 M3 I
例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页+ W: h( A6 k4 H
注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。: b; t6 ~7 ]- V: @2 P# P" k+ N- X
修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容
! g( g9 n5 L4 y6 |- w5 f- RewriteEngine on: K& R$ G2 O; X
- #开启Rewrite模块! A0 T+ V' {& \' B: ?+ i
- RewriteRule (.*)\.php$ http://www.xp6.org/$1\.jsp [R=301,L,NC]
复制代码 #截获所有.jsp请求,跳转到http://b.xp6.org/加上原来的请求再加上.php。R=301为301跳转,L为rewrite规则到此终止,NC为不区分大小写
2 R1 _/ l- r, k0 ]2、域名跳转' l3 X3 O- Z" |7 U
如果请求为old.xp6.org下的所有URL,跳转至b.0 |6 I8 w: [3 F: y, x
- RewriteEngine on
' I, O2 H! T7 B6 f) V& T - #开启Rewrite模块
3 l& [; a) m; h& q$ f - RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]3 \7 q6 ]) Z; o$ j1 Y
- #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符
? E: s2 N' u# t% Z/ K - RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链
. P. g7 H( D7 h/ v+ X如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容
" A. e5 D+ a; o! e- RewriteEngine on
* _9 x/ |/ F1 D4 M - #开启Rewrite模块9 \* P, Z; s1 C1 I S* Q$ }
- RewriteCond %{HTTP_REFERER} !^$+ c' w* [5 |# @0 e5 j: S
- #如果不是直接输入图片地址9 l# W9 t; r7 k k1 t8 c( k: E9 a
- RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]
: \; O& @ M4 g% C$ D0 [* q - #且如果不是img.xp6.org所有子域名调用的
: o* O: Y1 V+ j# ]0 f+ }0 T - RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]
- y8 L8 f+ U- [0 @# ]3 [. t2 }' t; I - RewriteCond %{HTTP_REFERER} !qq.com [NC]/ I o; T8 e* C6 y' K; Z I
- RewriteCond %{HTTP_REFERER} !google.com [NC]
n4 r7 C, b3 y1 S& F - RewriteCond %{HTTP_REFERER} !google.cn [NC]
$ V1 g) j) N7 H* v - RewriteCond %{HTTP_REFERER} !baidu.com [NC]/ G4 M+ ~. W+ u! v5 ?0 c8 g
- RewriteCond %{HTTP_REFERER} !feedsky.com [NC]* g1 P& x5 ]1 R% k4 t) ]% i9 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文件2 ]0 ]# y! _5 v8 d4 |) ^+ w
在Apache2\conf\httpd.conf 最后一行添加" \( j/ |$ @! B- Y6 ~0 K
- RewriteEngine On
. P' l2 O: J& p; X% ]+ K - RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪
% x4 k/ {, O* i
+ G2 c3 f% c- k- @6 FLinux+Apache环境配置类似。8 e, t1 K% l" R0 Q! E1 P6 b0 J
9 a3 S# j" R+ |3 T# S$ y) ~ i% V/ _ |
|