|
|
环境:系统 Windows+Apache 2.2: F7 I& K- Z$ z* O8 [2 n1 V
; \* V7 w0 Z. v- V+ L9 J8 D0 V/ k
加载Rewrite模块:
, i, H; p0 K6 K/ [& H在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。
7 _: I9 z; r" ^# h9 b* A8 ]
4 w3 O# @; w- M+ }0 V5 N. ?8 d0 t允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):1 a. c; L! l+ C+ u3 j5 |
7 `( }- X: a: J. ?1 n8 _0 n! y
# AllowOverride controls what directives may be placed in .htaccess files.
% R& R( O' [$ D5 @# It can be “All”, “None”, or any combination of the keywords:7 u% E8 R7 t3 a" h; m: Q% o
# Options FileInfo AuthConfig Limit( F$ B/ m2 [" S9 k' t2 U1 B
#
- ]* a/ b/ [, B* j+ U1 gAllowOverride All
- j- S: T/ g5 Z' U3 a" u" D+ N* I6 {' E& M4 b0 R$ s" a; v
在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。
* p* [- f- \1 g! |& g: h5 a0 C6 N1 P2 a2 x
Apache Rewrite模块的简单应用:
$ |7 ]6 ]4 w( m+ A8 qRewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。
7 P0 b3 i( d. d1 I( Y
: d2 C" E5 e6 c7 l" @6 ~ e1、请求跳转7 q: z r ~+ h% V# b* @
目的是如果请求为.jsp文件,则跳转至其它域名访问。
4 i, d* n2 h# E( M0 z5 g例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页
# S! o" d* P$ \7 a6 ]$ b2 f7 w注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。
" m. ?: ]! I K2 Y. n7 |/ T. O修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容
]( ?% v9 n; l9 \3 N0 A* ~$ D- RewriteEngine on
" o) Z3 }' H$ Q4 E - #开启Rewrite模块
, _( ^$ v& }7 u k( o; v - RewriteRule (.*)\.php$ http://www.xp6.org/$1\.jsp [R=301,L,NC]
复制代码 #截获所有.jsp请求,跳转到http://b.xp6.org/加上原来的请求再加上.php。R=301为301跳转,L为rewrite规则到此终止,NC为不区分大小写1 V0 J4 L, r- u" Q% Y/ \
2、域名跳转
4 A0 U+ ?5 m6 z1 ?如果请求为old.xp6.org下的所有URL,跳转至b.
. c, s5 [, a2 x7 @$ S- RewriteEngine on
6 _# X y! P4 H+ K' \) v" G% @ - #开启Rewrite模块
$ v# V* D9 I+ W' _5 _! c+ z - RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]& j( W$ U0 }0 S: ^- p1 N
- #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符" k) j" |, p( V% n& y! D% L
- RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链
9 s( D2 {; f, A8 w如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容* B) l1 w' _ n6 `, k! E' g
- RewriteEngine on
: F' ^4 V! p( d# D: k - #开启Rewrite模块, S, M J% T% |4 V( b" j6 B0 ?3 Z
- RewriteCond %{HTTP_REFERER} !^$. B" ^( ~/ Q8 t- C# f! g. n
- #如果不是直接输入图片地址
8 y7 M( c) n. p* n5 ? - RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]6 j3 ?6 g# ^- y K: _
- #且如果不是img.xp6.org所有子域名调用的9 w& a# T, _/ K# f) q5 t# N
- RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]' L1 Q o9 w( K5 l. U
- RewriteCond %{HTTP_REFERER} !qq.com [NC]) a \' s6 t9 @' { [+ u
- RewriteCond %{HTTP_REFERER} !google.com [NC]
P4 J9 ~! A5 M5 e4 j - RewriteCond %{HTTP_REFERER} !google.cn [NC]
1 v/ M0 A' h. [& T' m* o6 Z - RewriteCond %{HTTP_REFERER} !baidu.com [NC]4 e+ z: O# e( Y8 F% _2 s8 n- [
- RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
: J7 \) e+ ` T+ D - 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文件
. J/ }0 `3 z3 A8 `8 i1 F在Apache2\conf\httpd.conf 最后一行添加
* }6 W! a9 b3 n' A- RewriteEngine On
* Q. I4 x- t! x( m; f* G - RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪
4 v% g/ {2 U5 j- _2 v, m: Q. W6 @# G5 q2 ~/ T6 n
Linux+Apache环境配置类似。( ^* \5 J% B2 Q0 T
# E- y3 i j* B- b, T5 Z7 \. N) T+ d
|
|