|
环境:系统 Windows+Apache 2.2$ b( q2 \! r0 w' p: s
C) C4 ~4 D$ e& E加载Rewrite模块:
% S3 T' ]/ i, h& c在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。
7 o. |! w, ]5 [6 b# g
7 @% y' W# ^ z& O7 S ?, N允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):: j) X; o- ~1 l, g M. ~; e
2 ?8 ` w @ T. W. H) {) n5 I7 c7 d# AllowOverride controls what directives may be placed in .htaccess files.! H/ e; Y& [- Z
# It can be “All”, “None”, or any combination of the keywords:) T) R* `" a* A) h
# Options FileInfo AuthConfig Limit
& ^4 j, ^+ p" q9 f' }, X) K+ ]#4 e0 v, o5 V" H3 N
AllowOverride All( e' L& m' Z- E8 z9 n9 Y9 h* C
* z) e e! `$ M/ Z5 d3 z/ o6 k
在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。, P" D9 b0 j' q( u
) r& m: i7 j' p! |8 x7 U/ C
Apache Rewrite模块的简单应用: j2 ~" D6 l; y+ p+ y+ C
Rewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。
- I9 X0 \/ l# ^: G/ L* V2 x l1 C
) |8 v+ C- t- D$ h1、请求跳转
4 m8 I, [& D% @3 y+ b1 v0 F. j# S目的是如果请求为.jsp文件,则跳转至其它域名访问。
6 A9 |( M: d$ j) [例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页
2 t3 B6 K8 v1 P& P. w' S注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。
+ N) G) @! S% D修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容
! `1 O- l: Y m& P- RewriteEngine on
# V2 o. l3 E/ ^. l9 _ - #开启Rewrite模块9 w4 a4 D+ j: K. ^" f) U
- RewriteRule (.*)\.php$ http://www.xp6.org/$1\.jsp [R=301,L,NC]
复制代码 #截获所有.jsp请求,跳转到http://b.xp6.org/加上原来的请求再加上.php。R=301为301跳转,L为rewrite规则到此终止,NC为不区分大小写9 Q' J$ q+ X7 B; u) f; p; Q2 h
2、域名跳转
" Q" }' N* v) m' g% m# o如果请求为old.xp6.org下的所有URL,跳转至b.
9 @2 m' h; w% o2 r0 ^5 h1 P- RewriteEngine on
1 l# |2 W: B" n0 F0 Y - #开启Rewrite模块
6 C: t! x- v# s' I& j* T - RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]9 x6 W! {9 j& d9 g3 F6 V
- #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符
& x! E% V6 F( T7 B - RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链
7 E- M% V" G* Y( {& L9 H# f; |6 |如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容
% d5 N, X% M6 ]' l& @2 x# [- RewriteEngine on
. f; S+ y- l/ [$ c2 a - #开启Rewrite模块$ P, z. ?! L3 Q
- RewriteCond %{HTTP_REFERER} !^$
" S# |. r4 [4 w% W2 X, O - #如果不是直接输入图片地址8 V4 w6 ^% \, |2 W7 }+ R3 q% I
- RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]* ~' C( |2 g3 D; \7 B
- #且如果不是img.xp6.org所有子域名调用的
1 F% B4 G/ A' _& c - RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC] j$ `, Y- f& r" q
- RewriteCond %{HTTP_REFERER} !qq.com [NC]
0 W+ X: P$ g2 u' k6 ~* y - RewriteCond %{HTTP_REFERER} !google.com [NC]* n$ ^, G' I% t' b9 V- I& R
- RewriteCond %{HTTP_REFERER} !google.cn [NC]4 A1 N3 g7 y$ y8 P1 c; }$ k) i
- RewriteCond %{HTTP_REFERER} !baidu.com [NC]* E1 _0 ]: ~ _ }" `
- RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
" i: d8 g( h) S5 j& E! @/ S - 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文件
& v2 [3 o' e; J k( g8 X0 R4 S在Apache2\conf\httpd.conf 最后一行添加
; ]# n$ S! z7 P8 x- RewriteEngine On
6 I- I1 ] m9 e' w& l+ Y - RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪
' R k6 C+ k/ t" h: h$ {
% C5 \) @. y; @: k7 n( K% t% r$ uLinux+Apache环境配置类似。- R' G9 o2 V3 e4 p; M- t
5 y$ `2 l% N# C% k1 \
|
|