|
|
环境:系统 Windows+Apache 2.2
: S8 i6 N2 R' d* W" D2 b
1 m+ _2 P3 }$ b, g加载Rewrite模块:
% g$ i9 f& o4 \- O8 l9 X在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。
4 Y5 r8 A; w( B1 G/ x' S& T
( N2 [* W! b$ f, ?0 Z允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):, G$ h! b' x! X
. R3 H" [% H' c. @* D+ v' u8 e; M
# AllowOverride controls what directives may be placed in .htaccess files.; D! J% Z0 u2 \5 i1 ~7 A
# It can be “All”, “None”, or any combination of the keywords:
7 @% O% \ I" k" o# Options FileInfo AuthConfig Limit. r1 Y0 l/ D: F) j( D
#3 [2 ^. I" h! D# ]$ f
AllowOverride All s$ ^1 b! y8 w( u, @. i, i' A
, V" V5 {' K9 l在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。
3 c. U! O3 y7 ~0 v
8 R6 c) p9 @% r& pApache Rewrite模块的简单应用:
. J, s/ W9 [. B4 e6 W. m5 pRewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。$ @' V6 g; b" D/ R
! e6 u. c" I; e" S: m; Y
1、请求跳转9 M! r$ X: J2 z. M4 y
目的是如果请求为.jsp文件,则跳转至其它域名访问。
B+ x, Q% {, S* H0 y9 Z例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页4 R9 @: S" z8 G
注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。
0 Y v. ?/ Y2 b修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容
6 H7 Z: f9 c0 f4 P- r) e- RewriteEngine on
+ h8 |, ]! J. w$ ?- P+ n - #开启Rewrite模块0 ?+ B7 I' h: g) N2 h
- RewriteRule (.*)\.php$ http://www.xp6.org/$1\.jsp [R=301,L,NC]
复制代码 #截获所有.jsp请求,跳转到http://b.xp6.org/加上原来的请求再加上.php。R=301为301跳转,L为rewrite规则到此终止,NC为不区分大小写
& a2 ^6 [6 [ w9 s2、域名跳转9 s4 V4 ~) G% @& _+ @7 Z
如果请求为old.xp6.org下的所有URL,跳转至b.0 E' H# L( ~1 D# Q
- RewriteEngine on
" h" ]% v8 K8 G& K9 V+ q. B, b - #开启Rewrite模块
& a0 N: Z3 B& J+ I - RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]
6 q% h3 C& f: {7 W( y - #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符% j3 q4 h0 j: N9 F* j& c
- RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链
; c& G+ K1 D& C: z4 ]4 b如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容
) w" G% j, r9 j/ O0 U/ U4 s/ U$ J- RewriteEngine on
9 V! V }4 [. W5 T6 b$ B - #开启Rewrite模块& x o1 R% g F: ?" A) r! Q' [
- RewriteCond %{HTTP_REFERER} !^$
" |4 A. m. }) ]3 m2 A& O: P - #如果不是直接输入图片地址' e7 N2 @3 J) E, S: o
- RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]
Z3 A5 w' h4 {( ]8 @1 c0 Z) D - #且如果不是img.xp6.org所有子域名调用的
2 V6 d1 _" ^2 W - RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]% J* i6 n1 `3 g$ I7 X
- RewriteCond %{HTTP_REFERER} !qq.com [NC]) V# a: ~' n. C7 N) `) A
- RewriteCond %{HTTP_REFERER} !google.com [NC]
1 l2 n/ [1 V$ l' o K7 B4 O% T - RewriteCond %{HTTP_REFERER} !google.cn [NC]- z: U; O) u: }, S
- RewriteCond %{HTTP_REFERER} !baidu.com [NC]6 \# e2 o4 b/ L
- RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
& M3 O# E1 S/ ]& A - 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文件
9 w2 R3 c+ x, X) R h' F在Apache2\conf\httpd.conf 最后一行添加
' Z- a6 R( D2 k" A- RewriteEngine On. G) c3 G2 a. L! [& @' g- J2 |+ m
- RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪
2 _" N+ R+ Z+ Y7 c! O* C7 H" _, W1 m1 j' t) B8 J- ^
Linux+Apache环境配置类似。3 r* I7 h r$ h: A9 e8 Q7 B2 K
2 D: Y9 \* a. H# V3 J+ X
|
|