|
|
环境:系统 Windows+Apache 2.2
6 F* V/ y- t/ H7 F
4 S m; q) J7 M( d加载Rewrite模块:
+ F6 V/ G. J$ E5 C在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。
; v# [- p( F5 B/ X# K' S" ?4 x8 R4 H, Y) V- P( ]7 u% w1 @- c2 t
允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):
/ j0 N1 T5 v4 u/ Q* B+ b- B9 i1 S) [2 ?* z. X% e- s0 |
# AllowOverride controls what directives may be placed in .htaccess files.
) N" g- G4 I$ j7 F" z l! g# It can be “All”, “None”, or any combination of the keywords:2 n' x: @6 e( A) }1 }; C
# Options FileInfo AuthConfig Limit4 [& B0 {$ y4 w! F1 [
#
% t# m/ q. D3 O+ ?8 j% W, ^AllowOverride All
& @8 g/ O/ p6 [2 l9 Q% c" K R) O3 y0 A6 p$ z! ]- y9 W
在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。
% O4 k: F' u& o, F& `( x& ?3 Q# l) t# M0 f
Apache Rewrite模块的简单应用:
' z: E! x. a/ V3 QRewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。
! J6 d/ ]3 R/ I" o" }0 o9 |; k) a5 y; x* G) O; ?4 |
1、请求跳转' k! F, \+ X" a. h' M& f
目的是如果请求为.jsp文件,则跳转至其它域名访问。
* j, P% [% g8 {& \: T& T例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页
) K( e' {7 n$ V; K" o8 D: g注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。7 s: ~5 l9 [. w! |' m4 Y; v
修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容1 S5 I% T- o, d y l5 S) n
- RewriteEngine on
/ T7 V' ~5 w# j; v* p# A' c - #开启Rewrite模块2 C4 I! I& J8 l5 P
- RewriteRule (.*)\.php$ http://www.xp6.org/$1\.jsp [R=301,L,NC]
复制代码 #截获所有.jsp请求,跳转到http://b.xp6.org/加上原来的请求再加上.php。R=301为301跳转,L为rewrite规则到此终止,NC为不区分大小写6 }% ?' n# [6 {3 U
2、域名跳转
# R2 j: T0 T- V" M如果请求为old.xp6.org下的所有URL,跳转至b.3 }6 o# P( Q6 [& `5 s
- RewriteEngine on
' t! Z. z# C { - #开启Rewrite模块
% t! u" L( B9 f - RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]& m3 X' Q7 P2 K8 L
- #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符
$ |9 G& T2 }9 V - RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链
5 k' B- \# M5 E6 X+ f& ~如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容
6 w1 R% I) S/ |5 p% h6 w+ F- RewriteEngine on$ F6 S/ e2 a/ h4 g
- #开启Rewrite模块
' L# a# }. W2 H' P3 f - RewriteCond %{HTTP_REFERER} !^$! Q" @* Y6 t; z/ h8 _
- #如果不是直接输入图片地址
; c) w) G+ X% X) W8 O" E - RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]
7 x6 S7 ~3 |6 h* S2 |+ _ - #且如果不是img.xp6.org所有子域名调用的; {( F( T$ V. o: D, |7 \9 V
- RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]" H# |; }/ R3 `- _- A" B. ?
- RewriteCond %{HTTP_REFERER} !qq.com [NC]
6 T5 L9 U( [4 w9 d7 U4 j- N2 _" P - RewriteCond %{HTTP_REFERER} !google.com [NC]
4 h9 \' s1 L& Z; x3 t - RewriteCond %{HTTP_REFERER} !google.cn [NC]
1 O) E4 n1 X [2 U - RewriteCond %{HTTP_REFERER} !baidu.com [NC]
9 K& L0 j! e% T2 \* e6 l6 m - RewriteCond %{HTTP_REFERER} !feedsky.com [NC]" J) i% F9 c9 |9 q/ t
- 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文件. G- p+ L o; O1 D3 G8 u
在Apache2\conf\httpd.conf 最后一行添加, D, {4 y" @& @1 V9 q
- RewriteEngine On( ~4 W3 U9 b; T) u5 X+ y
- RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪
7 A) q7 Y% P3 K, N- C
" B7 w- h6 }5 G5 G6 YLinux+Apache环境配置类似。
) z0 ?3 ?* q5 e, ?. n% t3 Z' T9 \ e1 m) Y
|
|