|
|
环境:系统 Windows+Apache 2.2
1 A/ ~; A( q$ x
! p4 y$ }* U8 B2 x; P+ z+ i- I; ]加载Rewrite模块:
& i4 V$ y3 C; E在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。# s# m C- r8 b* v! u: W9 g; j
' A& _7 S0 j* E H1 {, g
允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”): _6 E5 Q" e' A$ z, o/ f- R, d
" f% w: ]# U/ i/ n* R$ N; U2 i
# AllowOverride controls what directives may be placed in .htaccess files., Z( y4 H7 U3 p9 g( ?' i2 r
# It can be “All”, “None”, or any combination of the keywords:0 ~" H# e" N3 B8 S; q# v" }+ x
# Options FileInfo AuthConfig Limit# w' d9 ?6 Z& r1 a" p2 |; o3 i
#
- {7 Y, }+ o" c, p+ H2 L" Q% P2 lAllowOverride All
( W" ~, d% r$ o+ [. {
! d' m5 z5 ?0 J+ f) D. F8 m在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。
7 L2 J# t6 c0 Q8 x# c6 C2 O( M% J
Apache Rewrite模块的简单应用:
$ S0 I2 `/ G: t7 e [9 E/ Z3 n8 hRewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。) \+ v( }" p) e2 h9 r ?8 r, h* ?
9 J; r' r( G' ?" T" n8 z$ ]
1、请求跳转6 V4 s/ t; g* U8 t
目的是如果请求为.jsp文件,则跳转至其它域名访问。% L& k9 u6 E2 _
例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页* X, @) H% b9 c$ d! r* T- F
注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。/ o1 l7 O- S) R8 F0 \$ A2 X) ?
修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容& r+ s D0 L/ X: o2 Q* ^( Z
- RewriteEngine on
* ?; h+ g+ I y6 [! o3 T5 m - #开启Rewrite模块1 p4 h1 K6 g" m* 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为不区分大小写% ^' G7 R& I5 i
2、域名跳转
4 F' Z: F+ @: \如果请求为old.xp6.org下的所有URL,跳转至b.
' p; T5 f6 P; G, g# x* P m- RewriteEngine on$ W% X# v, b3 h
- #开启Rewrite模块7 y4 ~* i. X) ^2 d! o1 Q# ?. k
- RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]
8 K4 f0 s0 k, \0 P - #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符, j) i( b6 @. M% l9 A& h
- RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链# f5 C: j4 w4 L+ a
如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容
: x0 L2 n0 u/ P; p- RewriteEngine on
7 N9 l; P) j) }5 b) b7 U - #开启Rewrite模块
% z v' X* m2 {7 b9 e - RewriteCond %{HTTP_REFERER} !^$
9 F4 S: N4 w9 y' W7 B - #如果不是直接输入图片地址
6 M; W& z$ X# n, H4 P7 { - RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]
# B6 g0 L& b% b& v4 d: U! G, W0 ^ - #且如果不是img.xp6.org所有子域名调用的
7 t& d" s/ N) H3 g - RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]) `% r L- Z o8 P: O2 \
- RewriteCond %{HTTP_REFERER} !qq.com [NC]
+ E. z* s' n* x - RewriteCond %{HTTP_REFERER} !google.com [NC]
! b! C# @# Z( R - RewriteCond %{HTTP_REFERER} !google.cn [NC]
+ h$ Q0 n h; \ - RewriteCond %{HTTP_REFERER} !baidu.com [NC]
2 A8 `* z3 P. l( Y3 A - RewriteCond %{HTTP_REFERER} !feedsky.com [NC]" q1 [- P' k/ E
- 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文件3 R- L2 C4 q' O& P
在Apache2\conf\httpd.conf 最后一行添加
+ A7 U) O4 U4 C- ~- RewriteEngine On( O! V; |7 i8 _ k, v$ u% X
- RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪
8 K. q- l( b Y& k# i- m9 Z% P5 i$ Z! F' ?2 r. O' i" P
Linux+Apache环境配置类似。
8 S! P. y% ~* X$ W& w
4 B: ?- F; g7 }7 O3 Z |
|