|
|
环境:系统 Windows+Apache 2.2: |* y7 J/ G. |% e+ ~
, }# M& q4 B K0 J: j4 }7 E( B) c
加载Rewrite模块:
$ I" q; i3 a5 U+ g: `& L在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。8 m3 N! k% W, d9 X$ E3 N* B5 j) m, f
! s* i8 U) s* g% w! k
允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):' D- T$ K; l# ~' i5 x3 H8 b6 c
. z5 { _. b& N' H
# AllowOverride controls what directives may be placed in .htaccess files.; U K& X) i C- P7 J* B% C
# It can be “All”, “None”, or any combination of the keywords:2 R' d( g: `$ ^' ?2 D
# Options FileInfo AuthConfig Limit
# A# r& N. j! {#
0 ^ Q! T( i1 AAllowOverride All
) E6 p/ c" w1 J7 w9 h) T
$ e6 o1 i- m1 x4 C在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。
: s, Z; M0 G+ j8 G) f+ ^$ d `) _9 ?
Apache Rewrite模块的简单应用:; a4 {. G; t1 H# p
Rewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。
. [ N& _4 x7 ~. N/ I5 e( {( g. u" Y* M' y, |. D& }
1、请求跳转
/ k" J' A! x, o3 y' G目的是如果请求为.jsp文件,则跳转至其它域名访问。
* a2 W1 w! R& h o例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页9 y2 |: a/ Y+ S' N+ @- o
注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。
! O" g7 d: K( ?4 O+ s/ j6 O修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容
5 @# ~3 _) u% c- D" D X- RewriteEngine on
% D8 ]2 H0 B8 z0 G/ e8 n Y- o - #开启Rewrite模块9 ], E: `9 l. w2 s! s. V8 ~2 b
- 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 B( I' U* v( ^7 q: ]9 N, N
2、域名跳转% d3 d. O" k/ T. o4 n
如果请求为old.xp6.org下的所有URL,跳转至b.
: ?# m1 K! y6 q8 w9 @0 Q- RewriteEngine on$ A6 Z$ g3 K ~, A
- #开启Rewrite模块
. i6 m E7 H9 S" \% _; e' b - RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]8 x/ d+ p( i8 w% \* r2 d$ y# f
- #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符- n. X# e* m# J+ g# h2 |4 r
- RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链
Q& U+ H9 G' ?* a5 \) J z如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容
0 m# X. b; r+ N4 X# F a; ^" A- RewriteEngine on
) k5 t) n" E& H. u4 f, X - #开启Rewrite模块 K" q- g8 t3 @) h U
- RewriteCond %{HTTP_REFERER} !^$
; y6 `3 v, F% H1 {5 o$ \) N0 q - #如果不是直接输入图片地址
2 V: Q( d* a1 n, }" ~ - RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]
7 W+ y3 C1 @. K4 {* a - #且如果不是img.xp6.org所有子域名调用的0 N8 W& v T% O* s: q/ H1 k
- RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]
( K3 ]. \ c7 ^! u0 b2 a - RewriteCond %{HTTP_REFERER} !qq.com [NC]
+ d6 m8 x% K2 ~, O' i1 Y9 X - RewriteCond %{HTTP_REFERER} !google.com [NC]
& u( a8 x' _0 t4 W# L8 I5 S. K' V - RewriteCond %{HTTP_REFERER} !google.cn [NC]' C H" ~/ M: x9 ^: S/ L3 L0 [, N5 y
- RewriteCond %{HTTP_REFERER} !baidu.com [NC]
* j% X( p7 C# }9 A c - RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
4 M A# l; J& V2 k$ l4 y3 S" 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文件% G) T$ y0 |1 s* O6 f3 Q
在Apache2\conf\httpd.conf 最后一行添加
" J* Q0 ~: R# c+ L' y- RewriteEngine On
3 J! u$ Z0 b: Z - RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪4 \' x6 U' A8 X8 ~; ~" j
9 J1 c2 S0 j! V: g4 T5 XLinux+Apache环境配置类似。) w* l4 P# H8 Z5 Z5 N8 M0 r
( E$ G4 O+ ^" K, o6 D) t
|
|